A scanning apparatus and method for generating computer models of three-dimensional objects comprising means for scanning the object to capture data from a plurality of points on the surface of the object so that the scanning means may capture data from two or more points simultaneously, sensing the position of the scanning means, generating intermediate data structures from the data, combining intermediate data structures to provide the model; display, and manually operating the scanning apparatus. The signal generated is structured light in the form of a stripe or an area from illumination sources such as a laser diode or bulbs which enable data for the position and color of the surface to be determined. The object may be on a turntable and may be viewed in real time as rendered polygons on a monitor as the object is scanned.

Patent
   RE43895
Priority
Jul 26 1995
Filed
Dec 24 2009
Issued
Jan 01 2013
Expiry
Jul 25 2016

TERM.DISCL.
Assg.orig
Entity
Large
5
55
EXPIRED
0. 56. A method for generating three-dimensional data of the object, comprising:
irradiating light onto the object from a scanner;
detecting light reflected from a surface of the object by the scanner;
outputting information indicated by the detected light from the scanner;
detecting relative position of the object to the scanner at a timing related to a timing at which the reflected light is detected; and
generating three-dimensional data of the object using the detected relative position and the outputted information.
14. A scanner mountable on a multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
a light source operable to emit light onto the object surface;
a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
a data processor operable to process the electrical image data signals to generate digital image data,
the data processor being connectable to a bus to transmit the digital image data.
30. A laser scanner mountable on a multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the laser scanner having a housing enclosing:
a laser to emit a laser stripe onto the object surface;
a camera operable to generate images of laser light reflected from the object surface; and
a data processor operable to process the images generated by the camera to generate processed data defining a position of the laser stripe in the images, the data processor being connectable to a data communication link to transmit the processed data therealong.
22. A scanner mountable on a multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
a light source operable to emit light onto the object surface;
a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
a data processor operable to process the electrical image data signals to generate data defining coordinate measurements of the surface of the object, and to transmit the generated data on a physical data path.
0. 48. An apparatus comprising:
a scanner including a light source which emits light to an object so that the light reflects off the object, and a light detector which detects the reflected light, wherein the scanner outputs first information indicated by the detected light;
a processor unit which communicates with the scanner and which generates three-dimensional data of the object using the first information outputted by the scanner and second information relative to a position of at least one of the object and the scanner at a timing corresponding to a timing at which the light detector detects the reflected light.
35. A laser scanner mountable on a multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the laser scanner having a housing enclosing:
a laser to emit at least one laser stripe onto the object surface;
a camera operable to generate images of laser light reflected from the object surface, each image comprising a plurality of pixels; and
a data processor operable to process the images generated by the camera to perform measurements to sub-pixel accuracy, the data processor being connectable to a data communication link to transmit results of the measurements therealong.
0. 59. A method for generating three-dimensional data of an object, comprising:
irradiating light onto the object from a scanner;
detecting light reflected from a surface of the object by the scanner;
outputting information indicated by the detected light from the scanner;
generating a trigger pulse synchronized with a timing at which the sensor detects light;
processing position information relative to the position of the scanner;
outputting the position information in response to the trigger pulse; and
generating three-dimensional data of the object using the position data and the information output from the sensor.
7. A scanner mountable on a multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
a light source operable to emit light onto the object surface;
a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
a data processor operable to process the electrical image data signals to generate processed data of reduced quantity, the data processor being connectable to a data communication link to transmit the processed data therealong.
0. 43. An apparatus comprising:
a scanner including a light source which emits light to an object so that the light reflects off the object, and a light detector which detects the reflected light, wherein the scanner outputs information indicated by the detected light;
a position detector detecting position of at least one of the object and the scanner at a timing corresponding to a timing at which the light detector detects the reflected light; and
a processor determining a relative position of the object to the scanner using the information output by the scanner, and generating three-dimensional data of the object using the determined relative position and the information output by the position detector.
0. 44. An apparatus comprising:
a scanner including a light source which emits light to an object so that the light reflects off the object, and a light detector which detect the reflected light, wherein the scanner outputs first information indicated by the detected light;
a position detector which processes second information related to position of at least one of the object and the scanner at a timing related to a timing at which the light detector detects the reflected light;
a processor which communicates with the position detector and the scanner, and which generates three-dimensional data of the object using the first information outputted by the scanner and the second information outputted by the position detector.
11. A scanning apparatus, comprising:
a multiply-jointed arm having a plurality of arm segments;
a scanner mounted on an arm segment of the multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
(a) a light source operable to emit light onto the object surface;
(b) a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
(c) a data processor operable to process the electrical image data signals to generate digital image data; and
a bus connected to the data processor of the scanner to transmit the digital image data.
0. 36. An apparatus comprising:
a scanner including a light source which emits light to an object so that the light reflects off the object, and a light detector which detects the reflected light, wherein the scanner outputs information indicated by the detected light;
a position detector detecting position of at least one of the object and the scanner at a timing corresponding to a timing at which the light detector detects the reflected light;
a processor determining a relative position of the object to the scanner using the information output by the scanner; and
a three dimensional data generator generating three-dimensional data of the object using the determined relative position and the information output by the position detector.
0. 42. An apparatus comprising:
a scanner including a light source which emits light to an object so that the light reflects off the object, and a light detector which detects the reflected light, so that the scanner thereby scans the object, wherein the scanner outputs information indicated by the detected light; and
a processor which, as the object is being scanned by the scanner, determines a changing relative positional relationship between the object and the scanner at a timing corresponding to a timing at which the light detector detects the reflected light, and
a three dimensional data generator generating three-dimensional data of the object using the information output by the scanner and the determined change in positional relationship.
26. A laser scanning apparatus, comprising:
a multiply-jointed arm having a plurality of arm segments and a data communication link to transmit data; and
a laser scanner mounted on an arm segment of the multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the laser scanner having a housing enclosing:
(a) a laser to emit a laser stripe onto the object surface;
(b) a camera operable to generate images of laser light reflected from the object surface; and
(c) a data processor operable to process the images generated by the camera to generate processed data defining a position of the laser stripe in the images, the data processor being connected to the data communication link to transmit the processed data therealong.
16. A coordinate measuring machine, comprising:
a multiply-jointed arm having a plurality of arm segments and a physical data path to transmit data; and
a scanner mounted on an arm segment of the multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
a light source operable to emit light onto the object surface;
a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
a data processor operable to process the electrical image data signals to generate data defining coordinate measurements of the surface of the object, and to transmit the generated data on the physical data path.
1. A scanning apparatus, comprising:
a multiply-jointed arm having a plurality of arm segments and a data communication link to transmit data; and
a scanner mounted on an arm segment of the multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the scanner having a housing enclosing:
(a) a light source operable to emit light onto the object surface;
(b) a light detector operable to detect light reflected from the object surface and to generate electrical image data signals in dependence upon the detected light; and
(c) a data processor operable to process the electrical image data signals to generate processed data of reduced quantity, the data processor being connected to the data communication link to transmit the processed data therealong.
32. A laser scanning apparatus, comprising:
a multiply-jointed arm having a plurality of arm segments and a data communication link to transmit data; and
a laser scanner mounted on an arm segment of the multiply-jointed arm for movement therewith to capture data from a plurality of points on a surface of an object, the laser scanner having a housing enclosing:
(a) a laser to emit at least one laser stripe onto the object surface;
(b) a camera operable to generate images of laser light reflected from the object surface, each image comprising a plurality of pixels; and
(c) a data processor operable to process the images generated by the camera to perform measurements to sub-pixel accuracy, the data processor being connected to the data communication link to transmit results of the measurements therealong.
2. A scanning apparatus according to claim 1, wherein the data processor is operable to generate the processed data of reduced quantity by processing the electrical image data signals to generate measurement data and processing the measurement data to reduce the quantity thereof.
3. A scanning apparatus according to claim 1, wherein the data processor is operable to generate the processed data of reduced quantity by filtering the data.
4. A scanning apparatus according to claim 1, wherein the data processor is operable to generate the processed data of reduced quantity by discarding data.
5. A scanning apparatus according to claim 1, wherein the communication link comprises a cable.
6. A scanning apparatus according to claim 1, further comprising a battery power supply within the apparatus to power the scanner.
8. A scanner according to claim 7, wherein the data processor is operable to generate the processed data of reduced quantity by processing the electrical image data signals to generate measurement data and processing the measurement data to reduce the quantity thereof.
9. A scanner according to claim 7, wherein the data processor is operable to generate the processed data of reduced quantity by filtering the data.
10. A scanner according to claim 7, wherein the data processor is operable to generate the processed data of reduced quantity by discarding data.
12. A scanning apparatus according to claim 11, wherein the data processor comprises a frame grabber.
13. A scanning apparatus according to claim 11, further comprising a battery power supply within the apparatus to power the scanner.
15. A scanner according to claim 14, wherein the data processor comprises a frame grabber.
17. A coordinate measuring machine according to claim 16, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising three-dimensional positions.
18. A coordinate measuring machine according to claim 16, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising points in three-dimensional space.
19. A coordinate measuring machine according to claim 16, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising connected polygons in three-dimensional space.
20. A coordinate measuring machine according to claim 16, wherein the physical data path comprises a cable.
21. A coordinate measuring machine according to claim 16, further comprising a batter battery power supply within the apparatus to power the scanner.
23. A scanner according to claim 22, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising three-dimensional positions.
24. A scanner according to claim 22, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising points in three-dimensional space.
25. A scanner according to claim 22, wherein the data processor is arranged to process the electrical image data signals to generate data defining coordinate measurements comprising connected polygons in three-dimensional space.
27. A laser scanning apparatus according to claim 26, wherein:
the camera is arranged to generate images comprising a plurality of pixels; and
the data processor is arranged to process the images generated by the camera to generate processed data defining a position of the laser stripe in the images to sub-pixel accuracy.
28. A laser scanning apparatus according to claim 26, wherein the data communication link comprises a cable.
29. A laser scanning apparatus according to claim 26, further comprising a batter battery power supply within the apparatus to power the laser scanner.
31. A laser scanner according to claim 30, wherein:
the camera is arranged to generate images comprising a plurality of pixels; and
the data processor is arranged to process the images generated by the camera to generate processed data defining a position of the laser stripe in the images to sub-pixel accuracy.
33. A laser scanning apparatus according to claim 32, wherein the data communication link comprises a cable.
34. A laser scanning apparatus according to claim 32, further comprising a batter battery power supply within the apparatus to power the laser scanner.
0. 37. An apparatus comprising according to claim 36, wherein
the timing at which the light detector detects the reflected light is at least one of different timings defined by a synchronization signal; and
the apparatus further comprising a trigger pulse generator receiving the synchronization signal and, in response thereto, outputting trigger pulses to the position detector, which indicate the timing at which the position detector is to detect the position.
0. 38. An apparatus according to claim 37, wherein timing at which the trigger pulse generator outputs trigger pulses is a predetermined time behind timing at which the trigger pulse generator receives the synchronization signal.
0. 39. An apparatus comprising according to claim 36, wherein the position detector is a remote position sensor.
0. 40. An apparatus comprising according to claim 36, wherein the position detector calculates the position to thereby detect the position.
0. 41. An apparatus comprising according to claim 36, further comprising:
a probe which captures data from individual points on the object touched by the probe.
0. 45. An apparatus according to claim 44, wherein
the timing at which the light detector detects the reflected light is at least one of different timings defined by a synchronization signal; and
the apparatus further comprising a trigger pulse generator receiving the synchronization signal and, in response thereto, outputting trigger pulses, of which each indicates a timing at which the position detector is to detect the position, to the position detector.
0. 46. An apparatus according to claim 45, wherein the timing at which the trigger pulse generator outputs trigger pulses is a predetermined time behind a timing at which the trigger pulse generator receives the synchronization signal.
0. 47. An apparatus according to claim 46, wherein the position detector calculates the position to thereby detect the position.
0. 49. An apparatus according to claim 48 further comprising:
a position detector which detects relative position between the scanner and the object at the timing corresponding to the timing at which the light detector detects the reflected light.
0. 50. An apparatus according to claim 48, wherein
the timing at which the light detector detects the reflected light is at least one of different timings defined by a synchronization signal; and
the apparatus further comprising a trigger pulse generator receiving the synchronization signal and, in response thereto, outputting trigger pulses, of which each indicates a timing at which the position detector is to detect the position, to the position detector.
0. 51. An apparatus according to claim 49, wherein
the timing at which the light detector detects the reflected light is at least one of different timings defined by a synchronization signal; and
the apparatus further comprising a trigger pulse generator receiving the synchronization signal and, in response thereto, outputting trigger pulses, of which each indicates a timing at which the position detector is to detect the position, to the position detector.
0. 52. An apparatus according to claim 50, wherein a timing at which the trigger pulse generator outputs trigger pulses is a predetermined time behind a timing at which the trigger pulse generator receives the synchronization signal.
0. 53. An apparatus according to claim 51, wherein a timing at which the trigger pulse generator outputs trigger pulses is a predetermined time behind a timing at which the trigger pulse generator receives the synchronization signal.
0. 54. An apparatus according to claim 52, wherein the position detector calculates the position to thereby detect the position.
0. 55. An apparatus according to claim 53, wherein the position detector calculates the position to thereby detect the position.
0. 57. A method according to claim 56, further comprising:
generating a synchronization signal from the scanner; and
generating a trigger pulse, in response to receiving the synchronization signal at a trigger pulse generator,
wherein the relative position of the object to the scanner is detected at a timing at which the trigger pulse is detected by the position sensor.
0. 58. A method according to claim 57, wherein the trigger pulse is output at a timing which is a predetermined time behind a timing at which the trigger pulse generator receives the synchronization signal.

This application

The transformation matrix Tam can be found in several ways. Now referring to FIG. 11, a particularly simple, cost effective, and practical method involves the use of a reference plate 220. The reference plate 220 has three orthogonal flat surfaces 222 and a mounting point 221 to which the arm side mount 210 can be attached in a precisely known position relative to the orthogonal planes. Tam can be calculated using the following steps:

The above method can be encapsulated in the main scanning software provided with the scanning system or in a separate program. This has the advantage that much time is saved over an alternative of the user calculating Tam manually from arm positions output by the arm manufacturer's software and manually inputting the resulting Tam into the main scanning system software.

The probe side mount 214 is integral to the probe and does not move relative to the probe coordinate system. The transformation matrix Tmp is provided by the probe supplier with the calibration data for the probe.

The direct calculation of Tap using the arm and probe coordinate systems but without involving an intermediate mount can be carried out in many ways. Most of the ways involve using the probe mounted on the arm to capture data from one or more geometrical objects. The problem has proven to be very difficult, since many of the standard methods produce inaccurate results in either the orientation or position components often due to inherent instabilities triggered by relatively small errors. One way is disclosed, by example, for an S stripe probe:

The handedness of the coordinate systems of the arm 1 and the probe 3 would be known. The relationship between the normals of the surfaces on the alignment calibration object 230 could be specified. One way of doing this is by labeling the three faces 231, 232, 233 and specifying the order in which the three faces must be scanned.

The main advantages of the above apparatus and its method of aligning the probe are (1) that it involves a single alignment calibration object that is cheap to manufacture to the required geometrical tolerance and is relatively light and compact; (2) that the method is robust, simple to carry out from written instructions and quick; (3) that the processing can be encapsulated in the main scanning software provided with the scanning system or in a separate program; (4) that there is no need to have any preliminary geometric information about the orientation and position of the probe relative to the tip of the arm at the start of this method—for example, the probe could be slung on the underside of the arm pointing backwards and the method would work; and (5) that if the probe is knocked or damaged such that Tmp changes but the calibration is still valid, then this method of alignment will still work.

In using scanning systems to provide data for 3D applications software, the need for specific 3D reference points in addition to 3D surfaces became apparent. Some applications for which 3D surfaces are required that also require 3D reference points are animations involving joint movements where a joint is to be specified in the context of the 3D model. In this case, the joint can be quickly defined from one or more 3D reference points. A new method of using the scanning system is to use the probe 3 to scan the surface and to use the tip reference point 51 to capture individual 3D points by contact. An alternative method is to project a calibrated crosshair onto the object and use an optical method of picking up individual points. This can be used in both stripe and area systems. The calibrated crosshair is usually switched on just during the period in which individual points are captured. There could be two modes—in the first mode individual points are captured each time a button is clicked; and in the second mode, a stream of individual points are captured from when a button is first pressed until it is pressed again. The second mode is commonly used for tracing out important feature lines, such as style lines or patch boundaries. In the case of a stripe sensor, instead of projecting a crosshair, it may only be necessary to project a second stripe at the same time as the main stripe. The crosshairs may be calibrated by the probe supplier using a three-axis computer controlled machine, a known calibration object, and standard image processing techniques.

The scanning apparatus 100 is operable to scan an object and thereby generate a computer model of the object's surface using an intermediate data structure for efficiently storing points on the surface of the object during scanning, creating an instance of the intermediate data structure for the particular object; and controlling the storage of the scanned points in the intermediate data structures during scanning with an operator control system.

Three examples of these intermediate data structures may be points or encoded stripes or range images.

Points have the disadvantage of being unorganized and much information obtained from the structure of the probe and the method of its use is lost if the 3D data is reduced to points.

In the case of stripe probes, much information may be retained to improve the speed and quality of construction of a model from intermediate data if an encoded stripe intermediate data structure is used. Such a structure stores data from one stripe at a time. The stripes are stored in the order of capture. The time of capture of each stripe is recorded. The orientation of the probe is recorded for each stripe. The raw data points from the stripe may be processed before storing in the data structure to determine jump and break flags and to sample or chordally tolerance the raw data points to reduce the size of the intermediate data structure without losing any significant information.

In the case of area probes, the advantages of a range image as an intermediate data structure are well known. These advantages include a data structure that relates well to the area based data capture method and the efficiency of storage in an image in which only Z values are stored.

An intermediate data structure can be used in which the surface of an object is described by means of a finite number of linear and cylindrical range images that are, to some extent, characterized by the shape of the object.

A linear range image 70 is illustrated with reference to FIG. 13. The range image 70 has a coordinate system U,V,W and a spacing of points dU in the U direction and dV in the V direction. The linear range image 70 contains in its header definition its relationship to the world coordinate system X,Y,Z, i.e., the arm coordinate system. In the disclosed invention, the linear range image 70 cannot store negative W values.

Cylindrical range images 71, 72 are described in FIGS. 14(a)-14(b). The range image has a coordinate system W,R,A where A is an angle. The spacing of points is dW in the W direction and dA in the A orientation. The cylindrical range images 71, 72 contain in their header definitions, their relationships to the world coordinate system X,Y,Z. In the disclosed invention, the cylindrical range images 71, 72 cannot store negative R values. The direction +R and position R=0 of a cylindrical range image defines whether the points stored are inside the range image, as in FIG. 14(a), or outside, as in FIG. 14(b).

Referring now to FIG. 15, the range image placing algorithm takes a scanned point and tries to place it into defined range images by projecting a ray along the normal to the range image 105. If the point has a negative value in a range image—for example, point 104—then it is not stored in that range image. If the point is outside the extent of that range image, it is not stored in the range image unless the range image is extensible—in which case, the algorithm extends the range image far enough to place the point. If a point already exists in the range image position in which the point is to be placed, then the two points are compared. If the distance between the two points in space is outside a tolerance d, such as the error of the scanner, then the nearest point 102 is stored and the furthest point 101 is rejected. If the two points are within the error of the scanner, then their values are averaged and the average value is stored.

The range image-placing algorithm is simple and quick, but it is indiscriminate, often placing points incorrectly in range images and relying upon them being overwritten by a nearer point. If the range image is very dense, but populated with few values, then up to half the points populated could be incorrect because the surface normal of the point is incorrect. This can restrict successful scanning to coarse range images.

The range image-placing algorithm is improved upon with the surface normal extension. The range image-placing algorithm does not have an estimate of the surface normal of the point to be placed. Also, it does not take into account the orientation of the probe when the stripe is captured. To improve the range image placing, the fact that most stripes are scanned in sequence and have near predecessor and near successor stripes is used. For example, as illustrated in FIG. 16, there are eight neighboring points 116 on a stripe 114 and on its predecessor 113 and successor 115. These can be used to approximate the surface normal of a point P before it is placed in a range image. Three sequentially scanned stripes 113, 114, 115 are shown on an object 111 and projected onto a range image 112 as stripes 113a, 114a, and 115a. The point P, with coordinates Xp,Yp,Zp on stripe 114, has eight near neighbors 116 on the respective stripes 113, 114, 115 as described above, and an approximate surface normal Np with coordinates Ip,Jp,Kp. The probe orientation for stripe 114 is NS with coordinates Is,Js,Ks. By calculating the surface normals NS, NP, and NR, where NR is the normal of the range image 112, one is given a choice of two opposite surface normals. The correct one is the one that can be seen from the probe 3 orientation—assuming that the changes in probe orientation for the three stripes are not significant to the surface normal direction. If the surface normal NP of a point P is found to be facing away from the surface normal NR, then the point is not placed on the range image. This surface normal extension eliminates the majority of incorrect point placements in range images. In a practical implementation, three stripes of points are buffered before the first stripe of points is placed in the range images. The normal extension in a modified form can also be used for the first and last stripes by using the two successive or two previous stripes. When the three stripes 113, 114, 115 are nearly coincident, perhaps because the arm is moving too slowly, then the accuracy of the surface normal estimate is low and the normal cannot be used. A different normal calculation can be made using any neighboring points already placed in the range image instead of the neighboring stripes. A further, normal extension to the range image placing algorithm combines both the stripe and the range image data to provide a better estimate of the surface normal. The calculations involved in these normal extensions can provide a bottleneck to the scanning process. The bottleneck can be overcome by using only two stripes, less samples (5 instead of 9) or a faster computer.

A number of range images that are positioned in the object coordinate system must be defined. The range images have specific mathematical definitions. Two basic types of range image are used—linear and cylindrical—as discussed above. A range image has direction and a zero position. The range image can only store points that are in front of its zero position. If there are two or more surfaces of the object in line with a point in the range image, then the surface that is nearest to the range image's zero position is represented in the range image. A range image can be constrained in size or unconstrained in size. The range image can be one image of fixed density or comprise a patchwork of a number of adjoining images of different densities. Each grid position in the range image is single-valued. The range image will typically use 4 bytes to store a depth value Z, from 1 to 4 bytes to store the gray scale or color value 1, and from 1 to 3 bytes to store the orientation N. This is illustrated with reference to FIG. 17, which illustrates how a single point is represented. The 3 bytes suggested for orientation N will not permit a very accurate orientation to be stored. More bytes could be used, but there is a trade-off between data storage size, processing time for converting floating number orientations to/from a compressed integer format, and accuracy. Range images will normally require from 5 to 11 bytes to store each point, depending on the operator's requirements. For comparison, 20 bytes are typically required to store an ASCII X,Y,Z value.

Now referring to FIG. 18, it is possible to define—for a finite object 9 of any shape—a finite number of range images of the above types that, for all practical purposes, enables any and every point on the external surface of the object 8 to be stored in one or more range images 81, 82, 83.

With objects with deep external features, such as the inside of an ear, it may not be possible or practical to scan all parts of the external surface, but it is possible to represent them theoretically.

The number and position of the range images used in the process are such that they are sufficient to be able to store enough of the surface of the object to enable a computer model of the desired accuracy and detail to be generated.

In a manual process, the number and position of all the range images may be defined by the operator before scanning. Alternatively, just one may be defined by the operator before scanning begins, followed by the definition of others at any point during scanning. The operator has a choice of several strategies. He can define range images and scan range one at a time. He can define a number of range images and scan simultaneously. He can define some range images and scan followed by defining more range images and then scanning. If a point is scanned that does not fit onto any defined range image, then it is rejected. Alternatively, such rejected points could be automatically saved for placing into any new range images that the operator may subsequently define.

A typical number of range images varies from 1 to 20. Some range images need only be very small in size—small enough to cover a part of the object that is otherwise hidden from recording on other range images. The density of each range image can vary. For instance, a large, smooth part of the object does not need a high point density; but a small, finely detailed ornament may require a high point density. Each range image has a direction.

The operator may select the most suitable set of predefined range images from a library of range image sets. He can then edit the set to suit his object. Each new set is then stored in the library. A set can be thought of as a set of templates. As an example, for a human form there could be a range image set consisting of five cylindrical range images for the limbs and the trunk, together with five linear range images for the top of the head/shoulders, hands, and feet. For a car, one cylindrical range image for the car's body and two linear range images at each end of the car could be enough. It is important to note that the axis of a cylindrical range image must lie within the object or part of the object being scanned.

A range image is manually defined by the operator by first selecting the appropriate range image type—cylindrical or linear—and second, placing the probe to give the desired position and orientation of the range image and selecting it using the operator control system. For a cylindrical range image, the probe could be positioned to first give the position and direction of the axis and then to give the maximum radius.

Now referring to FIG. 19, an inference method provided for updating range images from the other registered range images is also a novel method. The inference method progresses through each array position in the range image 121 that is to be updated. The inference algorithm can update positions that either have no value or have a value with a surface normal that is steeper than a given value, or have a less steep value, or any combination of these according to the operator's requirements. If a position in the range image 121 is to be updated, then that position is projected as a normal ray 126 onto all the other range images 120, 125, one at a time. If the ray intersects with another range image 120, then the local triangular surface element through which the ray first passes is located on the surface 123 and constructed. The value 124 at the intersection of the ray 126 and the triangular element 122 is then inferred and placed onto the range image being updated. If the ray intersects several range images 120, 125, then the inferred values from the range images are averaged after outliers have been removed. Outliers are removed by using a tolerance such as the error of the scanner. The original value (if it exists) in the range image 121 being updated, could be included in this outlier removal/averaging process.

The inference method is particularly used when an additional range image is added at a late stage in the scanning process or if range images are defined/scanned one at a time. The method enables surface areas that are nearly orthogonal to the range image, i.e., are almost vertical walls, to be well defined from data stored in the other range images. This provides a better set of points for carrying out the polygonization of one range image resulting in a more accurate polygonal network and simplifying the polygonization process.

The probe 3 provides data that is displayed on the display monitor 7 as a rendered polygonal surface 13 in real-time or with an acceptable delay such that the user can watch the display monitor 7 and use the feedback of the rendered surface to guide his movement of the probe 3. Real-time is defined in the context of visualization as an operation reacting with a delay small enough to be acceptable to an operator in normal use. The probe 3 could be a stripe probe or an area probe. Where the probe captures 3D and color information, then the color information can be mapped onto the 3D model to texture it, as discussed below.

The surface to be displayed is calculated for stripe probes one additional stripe at a time. Referring now to FIGS. 20(a)-20(g), as a stripe 301 is captured, it is converted using one of several commonly used methods into a finite string 303 of 3D points 302a, 302b and flags 304, 305 in the world coordinate system X,Y,Z using the previously obtained calibration and alignment data for the probe 3. The maximum number of points is usually equal to the number of rows 281 or the number of columns 282 in the CCD array 25, depending on the orientation of the CCD in the optical setup. This disclosure will refer to rows, but it can equally apply to columns or any other way of organizing the data recorded by the camera. Where the stripe crosses a row the position on the CCD array can usually be calculated to subpixel accuracy by one of several commonly used methods. If there is no data for one or more neighboring rows, such as missing positions 302e, 302f (not shown), then a “break” flag 304 is output into the string to indicate a break in the surface recorded. If there is a significant jump discontinuity in range above a maximum value that is appropriately set for the scanning resolution of the probe 3, such as between 302j and 302k, then a “jump” flag 205 is output into tile string of 3D points to indicate either a vertical wall relative to the probe orientation or an occluded surface. The string 303 is filtered to reduce the number of points while effectively transmitting most of the information. The object of filtering is to reduce the amount of data processed for surface rendering and hence increase the speed of the rendering process with a minimal degradation in the quality of the surface. The first method of filtering is to skip some of the stripes. Another method is to sample the rows, e.g., take every nth row. A third method is to chordal tolerance all the points in the stripe and discard the points that are surplus and within tolerance. Where computer speed is limited, the first and second filtering methods are preferred because of their simplicity and because the resulting regular grid of points produces regular polygons that look good on the display, as opposed to long thin polygons that might result from a chordal tolerancing process that can have rapidly changing surface normals if the data points are slightly noisy due to inaccuracies in the probe and the arm, and may present an unattractive “orange peel” effect on the display. The same process is repeated for a second stripe 306 capturing data points 307, resulting in a second string 308 of 3D values 307a, 307b, etc., and flags. A surface comprising triangular or quad polygons is then constructed between the two strings 303 and 308, resulting in a string of polygons 309. The string of polygons is then displayed by a renderer. The renderer may or may not take into account the previous polygons displayed, the viewpoint, and lighting model.

If color has been recorded for a polygon then the color information can be mapped onto the polygon. The precise mapping algorithm depends on the format of the raw color information, which depends on the design of the probe. The raw color information may comprise point, line, or area samples. The raw color information may be adjusted before mapping using calorimetric calibration and intensity calibration data. During the mapping process, the color information may be adjusted for the probe to polygon distance at point of color capture and polygon orientation to probe at point of capture. The basis for the adjustments is a set of calibration procedures carried out for each individual probe.

The viewpoint for the surface displayed can have a constant position, zoom, and orientation in the world coordinate system of the object such that, as the probe is moved, the surface displayed increases where the data is captured. The viewpoint is set before scanning starts, either with an input device (such as buttons) on the arm, foot pedals, a mouse, and a keyboard, or by using the probe to determine the viewpoint. Alternatively, the viewpoint can have a constant position, zoom, and orientation in the probe coordinate system such that, as the probe moves, the surface is completely re-rendered at regular intervals, each time with the new surface displayed where the data has been captured, with the regular intervals being at an acceptable real-time rate, such as 25 displays per second or less often. Alternatively, the viewpoint can have a constant position, zoom, and orientation in the world coordinate system where the surface displayed increases where the data is captured that is completely updated to that of the probe coordinate system on operator demand such as by the depressing of a button or foot pedal or at regular time intervals, such as every 10 seconds. The different methods for updating the viewpoint provide different advantages, depending on the size and type of the object being scanned and the speed of the computer in recalculating the surface display from a different viewpoint.

Referring again to FIG. 2, the display 7 can be mounted on the probe 3 such that the rendered surface 13, or other image displayed, moves with the probe movement. Referring now to FIG. 21, the display 7 could be mounted in front of the operator's eyes as part of a heads-up display 271, which may or may not also allow the operator 270 to see his real environment as well as the rendered surface 13, or it can be mounted elsewhere. In practical use, it is found that the operator watches the rendered surface 13 on the display 7 while scanning because this has the important advantage of ensuring that all the object is scanned. In some applications, such as scanning large objects or using a turntable to rotate the object, watching the display 7 as a large display monitor situated on a workbench can be advantageous. In other applications, such as scanning a spherical type object, a display screen on the probe 3 is advantageous because the operator moves with the probe. With sufficient quality in a heads-up display and with no negative effects such as feeling sick, a heads-up display may be best for nearly all applications because it is feeding back most directly to the operator.

Referring again to FIG. 2, it is already technically possible to integrate the display 7 with the probe 3 as, for instance, a color LCD screen is small, lightweight, realtime and flat, while having sufficient resolution to render the surface so that the operator can see what has and what has not been scanned. A display mounted on the probe could be tiltable in one or two axes relative to the probe. The ability to tilt the display relative to the probe can give the operator improved ability to scan in spaces with poor visual access. Buttons 6 on the probe can be used to navigate menus and select from menus.

As computing power becomes faster and more compact, it will be possible to encapsulate the computer 4 in the probe 3 as well as having the display 7 mounted on the probe. The probe might have memory 262, which could be both dynamic memory and magnetic memory, such as a CDROM or digital video disk (DVD). The probe might have a local power source 260, such as batteries. This would be the case with one or more remote position sensors 261 mounted inside the probe. Although one remote position sensor is sufficient, more accuracy is obtained by averaging the positions coming from three or more remote position sensors. Another benefit of three or more sensors is that when a spurious position is output by one or more sensors, this can be detected and the data ignored. Detection of incorrect positions is by means of comparing the positions output by the three sensors to their physical locations within the probe to see if the variation is larger than the combined, acceptable error of the sensors. Since remote position sensor technology is likely to remain much less accurate than multiply jointed arm technology, it is preferable that probes with remote sensors use array scanning means rather than stripe scanning means. With a single array scan, all the data in the array (i.e., a range image) is accurately registered to each other, but with stripes there are position errors been any two sequential stripes. It is possible to use an iterative closest point (ICP) algorithm on overlapping range images to substantially reduce the errors caused by the remote position sensors; but this is not possible with stripes.

A number of different technologies exist for area probes including binary stereo, photometric stereo, texture gradients, range from focus, range from motion, time of flight, Moire interferometric, and patterned structured light systems. The most common systems in use in industrial applications are time of flight, Moire, and patterned structured light. Different area probe technologies have different advantages and disadvantages for manual scanning.

Time of flight systems use a modulated laser spot to measure a scene by the phase shift between outgoing and reflected beams, which is proportional to the range of the object point. A complete range image is captured by scanning the whole region of interest. For a small area, this technique is advantageous since it is line of sight, although the accuracy is generally of the order of 1-2 mm unless multiple measurements are taken at each point, thus reducing scanning speed significantly. It is thus too slow.

Moire systems use gratings in front of projection and viewing optics to produce an interference pattern that varies according to local changes in height on the object. Absolute measurements and measurements across discontinuities are only possible by taking several measurements with different grating configurations or from different project angles. For relative height measurement, these systems offer high accuracy. It is thus too problematic to obtain absolute measurements.

A depth from focus range area sensor has recently been demonstrated that allows the real-time determination of range from pairs of single images from synchronized cameras, albeit with the use of relatively complex hardware. It is thus too complex to use at this point in the development of the technology.

Referring now to FIG. 29(b), patterned structured light systems come in many families and rely on projection of a light pattern and viewing off-axis from the projection angle. Synchronously scanned laser triangulation probes can be raster scanned over a 2D area. A laser stripe triangulation line can be scanned in one direction to produce area measurements. Scanning can be mechanical or electronic. Multiple laser or light stripes 363 can also be simultaneously projected over an object to obtain the same effect as a scanned stripe, but this has the disadvantage that, in a single image it is not possible to differentiate between the stripes. To overcome this problem, a number of systems use a gray-coded sequence of binary stripe patterns that solves the ambiguity problem. However, the sensor should remain stationary during the capture process. An alternative solution is the projection of color-coded light stripes that allow the unambiguous determination of range, even with depth discontinuities from a single image. Note that the simultaneous use of a number of stripes is herein classified as an area technique and not a stripe technique.

The simultaneous projection of color-coded light stripes overcomes the disadvantages of the previously described systems and is the preferred area embodiment of this invention. Each stripe is one color. Each color may be a discrete wavelength, such as provided by a number of different laser diodes or a subset of a spectrum range of color generated from a white light source. Either all of the colors may be unique or a small number of colors may repeat. The repetition of a small number of colors can lead to ambiguity if stripes of the same colors are not sufficiently separated.

The probe encapsulation would have advantages in terms of cost reduction and complete flexibility in freedom of use because even cables may not be required and the only limits would be the range and accuracy of the remote position sensor.

If an arm is being used as the position sensor, the probe with a display mounted on it might receive its power along a cable that may follow the path of the arm, and the computer may be situated in the base of the arm, which would reduce the weight of the probe and reduce operator fatigue.

Referring again to FIG. 21, if a heads-up display 271 is being used, the probe 3 with one or more remote position sensors 261 could be mounted on the operator's head 270 with fixing means 272 to produce a head-mounted scanning system 274. This would lead to hands-free scanning, although some method of navigating menus, e.g., verbally with speech recognition by means of a microphone 273 or via buttons would be important in practice. It is likely that the standoff from the probe to the object using a head-mounted scanning system 274 would be quite large, for example, 250 mm, but it could be more or less.

There are several ways of automatically polygonizing intermediate data to form a 3D polygonal model. Two ways are described—strip polygonization and range image polygonization.

The strip polygonization of intermediate data to automatically create a polygonal model is described for a stripe scanner. The following description is by means of an example and comprises the following steps:

1. Take the intermediate data in the order in which it is scanned, including the probe orientation for each stripe. For a stripe probe, this will typically consist of a number of neighboring stripes with occasional discontinuities, such as when the scanning process is paused or a turntable is turned or the direction of scanning is reversed. The intermediate data is preferably in an encoded stripe form as described above.

2. Group the data into stripes of similar probe orientations and no discontinuities. An acceptable variation of the probe orientation in a group of data may be ten degrees. The average normal for each set of stripes is specified. A new group is started each time a discontinuity appears or when the probe orientation varies unacceptably.

3. If not already done in the intermediate data, filter the stripes in each group using a chordal tolerancing routine to reduce the quantity of points and maintain the positions of the break and jump flags.

4. Use a 2.5D polygonization method to polygonize each group. This will result in a number of 2.5D polygonal meshes. There may be holes in any of the meshes. The method eliminates occluded surfaces behind surfaces resulting from variations in the probe orientation within the group.

5. Use a polygon mesh integration method such as an implicit surface method to integrate the 2.5D polygonal meshes into a computer model comprising one or more 3D polygonal meshes.

6. If required, use the known base plane of the object specified during the scanning setup to automatically close the bottom of the model where the object could not be scanned because it was resting on a table or turntable.

7. If required, use a general closing function to automatically close all holes in the model.

8. If required, use a smoothing function set such that features created by known levels of inaccuracy in the 3D scanning process are smoothed out and features greater in size than the inaccuracy of the system are maintained.

9. Convert the internal polygon format into an output file of a commonly used polygon file format, such as DXF.

The range image polygonization of intermediate data to automatically create a polygonal model is similar to strip polygonization. Each range image is effectively a group of stripes with the same surface normal. Steps 1 and 2 above are, therefore, not needed. There are two ways of carrying out the equivalent of step 3 above. Range image data may be chordal toleranced as a series of stripes as described in step 3, and the polygonization process continued with steps 4 to 9, as required. In the second way, given the greater structure of a range image over a group of stripes, steps 3 and 4 may be combined and a range image tolerancing algorithm combined with a 2.5D polygonization algorithm and the polygonization process continued with steps 5 to 9, as required.

Area scanners usually output range images. In general, range image polygonization is better suited to area scanners and strip polygonization is better suited to stripe scanners. If the intermediate data structure is range images then the range image polygonization will work whether each range image relates to a particular data capture instant or is part of a defined range image structure that is characterized by the shape of the object.

The combining of color data onto the 3D model is known as texture mapping.

Before raw color data in the form of color images can be texture mapped onto the 3D model, it must first be corrected by means of various calibrations.

An important calibration is the geometric calibration of the color camera and finding the alignment transform of the color camera to the calibrated 3D measurement system in the probe. Without these calibrations/alignments, neighboring color samples when mapped together will produce visible errors. The objective of these calibrations is to get the geometric errors much smaller than those of the arm accuracy. The first geometric calibration is to take out lens distortion. Standard means are used for this based on imaging geometric objects of known size and extracting pixel coordinates using standard image processing techniques. The second is to create the camera model. A simple pinhole model can be used or a more complex model. Standard means are used for this based on imaging geometric objects of known size from different distances and extracting pixel coordinates using standard image processing techniques. The third is generating the alignment transform. A method has been developed based on 3D and color imaging geometric objects of known size using the probe. For all three methods, a three-axis computer controlled machine is used to ensure precise distances. The probe engineering must be geometrically stable enough such that this transform will only be recalculated rarely such as after the probe has been dropped or damaged.

Much of the effect of distance from the probe to the object on recorded light intensity can be calibrated out. A diffuse, flat, white surface is imaged normal to the camera axis at a number of different distances from the probe to the surface. The distances are chosen to cover the whole scanning range from closest point to furthest point. The variations in mean intensity recorded in the camera are used to calibrate the probe with distance. This calibration data is used to correct the color data recorded when scanning an object such that all color data is corrected to a known distance equivalent.

Much of the effect of tilt of the surface from the camera axis on the color quality can be removed, but the effectiveness of this depends on at least the surface reflectance for each color. A diffuse, flat, white surface is imaged at various angles to the camera axis at a fixed distance from the probe to the surface. The angles are chosen to the point at which there is significant deviation from the Lambertian model. The variations in mean intensity recorded in the camera are used to calibrate the probe intensity with relative surface angle to the probe. This calibration data is used to correct the color data recorded when scanning an object such that all color data is corrected to a normal equivalent.

A standard calorimetric calibration is carried out using reference colors, such as Macbeth charts that are mounted normal to the color camera axis at a known distance from the probe. Corrections are made to a commonly used color standard, such as to the CIE. Individual pixels in the camera may be color- and intensity-corrected.

Some of the above calibrations vary little among probes manufactured to the same design. This is probably due to tight manufacturing tolerances. The calibration information can be incorporated into the software as, for example, constants or tables or equations for the probe design. Others calibrations are carried out once on the setup of each probe after manufacture. Other calibrations could be carried out each time the scanning system is used—for example, the scanning of a white surface at a known distance will set the lamp intensity relative to the intensity when the bulbs were new.

Referring now to FIG. 22, there are several methods of mapping color images 320 onto the 3D model 324 to form texture maps. Surface elements on the 3D model may be flat polygons or elements of a high-level surface form. A mapping method for color images is:

1. Each color image 320 is corrected using calibration and geometric data.

2. For each surface element 321, the color image whose normal 323 is closest in orientation to the normal 322 of the surface element 321 is selected (the master image) and the texture map coordinates for that surface element go to the mapping of that surface element onto that master image. The closest image normal is that of 320a in this case.

3. The other color images that map onto the surface element are then processed. If the surface normal difference between the surface element and a color image is above a certain tolerance, then that image is ignored. This is because the color quality obtained in the image degrades significantly as the surface orientation of the object relative to the image becomes very steep. The part of the master image on which the surface element maps is then improved by a weighted average of all the color image mapped parts. The basis of the weighting is the cosine of the difference in surface normal between the surface element and the color image.

The apparatus and methods disclosed above each singly produce an improved color “copy” of the 3D model and a significant commercial advantage.

Ways of improving the scanning timing and consequently reducing geometrical errors are disclosed.

Where no electrical triggering is possible, to reduce the inaccuracy caused by the time difference between the recording of the arm position and the capturing of the frame, the following method is employed:

1. With reference now to FIG. 23, the arm position before the frame is captured B is recorded and the time t1 of this is recorded.

2. A frame is requested.

3. When the frame has been captured C, the time t2 is recorded. There is a known delay T/2 with little variability from the middle of the frame capture to this time t2, which is largely dependent on the shutter time open T.

4. The arm position after A is recorded and the time t3 of this is recorded.

5. The arm position in the middle of the frame is estimated by interpolating in six degrees of freedom between the two arm positions B,A using the time (t2-T/2) at the middle of the frame capture as the interpolation weighting between t1 and t3.

6. In the case of a long interrupt, if the difference between t1 and t3 is significantly large, then the data is deleted.

This interpolation method can increase the accuracy of a non-triggered system by a large amount and is extremely significant in the quest to obtain geometrically accurate data.

In addition, the operating system under which the interpolation software runs may be set to prioritize the interpolation software as high priority so that the introduction of delays due to other software being executed is minimized. Even if another software function interrupts this process, the validity of the process is not impaired unless the interrupting process is of extraordinarily long duration. Prioritization is not essential, but will contribute to reduced timing error where prioritizing is available in the operating system.

In the case where triggering is possible, there are many methods of carrying it out. One method is, with reference now to FIG. 24, that the synchronization signal 240 from a CCD camera 25 is stripped off by electronic circuitry 241, and a relay 242 is used to generate a series of trigger pulses 243 to the arm computer 2. This has the advantage of eliminating both the arm and camera variabilities and increasing the accuracy of the scanning as much as possible for a given arm and camera.

The operator interface means alone—not including the standard computer means such as mouse and keyboard—can be used to control the scanning and computer model generation process and the functionality of the options that can be actuated. The operator interface means include means for navigating menus such as buttons, foot pedals, joysticks, trackballs, and the position-sensing means—arm or remote position sensor.

Using any of the above means, the operator can simply select the required operations and operating parameters, which could include, for example, being able to:

Complex surfaces can be created from marked surface patch boundaries. Referring now to FIG. 25, the object 130 is painted a uniform color (if necessary) before marking the patch boundaries 131 by hand in another color, e.g., using a black marker pen on a white object. It is not important to mark these boundaries accurately, as they usually lie away from features such as edges or rapid changes in surface normal. The object is then scanned in using one of the methods disclosed. The color information is then used to automatically generate the patch boundaries by means of an algorithm that separates out the points 132 lying on the patch boundaries by means of a color filter and then fits patch boundary lines such as splines 133 to these points. The edges may also be detected using a separate algorithm. The patch boundaries that have been automatically created from the scan can then be used to create the complex surface model. The main benefit of this method is that it is easier to mark patch boundaries on the object than on the computer model prior to the automatic creation of the complex surface model. Referring now to FIG. 26(a), an important implementation 333 of the invention is disclosed in which the multiply-jointed arm 1 is mounted on the end of the horizontal arm of the horizontal arm measuring machine 330 for scanning a large object 331. The horizontal arm measuring machine 330 has a machine control box 332 that outputs the position of the machine to the computer 4. The arm control 2 and the probe 3 are also connected to the computer 4. This implementation makes the scanning of large objects more precise in that either a large arm or leapfrogging would be less accurate than a horizontal arm, and simpler in that each time the horizontal arm is moved, the software takes it into account automatically rather than needing to reregister using a leapfrogging method. In industry, firms that have large objects, such as automotive manufacturers, usually have horizontal arm machines so this makes the implementation particularly attractive.

Referring now to FIG. 26(b), firms that have large objects, such as automotive manufacturers, often have two horizontal arm machines situated opposing each other, both of which can reference to the same object coordinate system. In this case, the whole of the object may be scanned by scanning part of the object with the probe fitted to the first horizontal arm machine and the rest of the object with the probe fitted to the second horizontal arm machine.

This invention is a general 3D model-making device and has wide-ranging applicability. The application industries for this invention include design stylists who need to turn clay objects into computer models quickly and accurately; games developers and animators who need to convert new characters into 3D data sets for animation; shoe manufacturers who need to make custom shoes; automotive manufacturers who need to model the actual cable and pipe runs in confined spaces; and medical applications that include radiotherapy and wound treatment. Altogether, some 200 applications have been identified for this invention.

Referring now to FIG. 27, as an example of the applications for the scanning apparatus 100 in accordance with the invention, the scanning apparatus 100 can be used to scan a human foot 141 with full body weight on it on surfaces of different resilience is also disclosed. The outside of the foot 141 is first scanned using the methods and devices disclosed above with the required amount of body weight being exerted. The foot 141 is then removed and a second scan is carried out of the surface 142 on which the foot 141 was pressed. The first scan is a positive. The second scan is a negative. The surface normals of the second scan are then reversed by means of a simple algorithm and the two scans combined to give the positive shape of the foot. It is important that if a deformable material is used that it does not spring back. Such a material might be sand, clay, or plaster. Materials of different resilience may be appropriate for different applications. This method is also appropriate when the foot is pressed onto the lower half of a shoe with the sides cut away.

There is a need by automobile manufacturers to identify the actual route of pipes and cables in confined areas, such as an engine department. Automobile manufacturers are trying to model in 3D CAD all aspects of a car. They need some way of scanning pipes and cables in the car reference system so that high level 3D models of the pipes and cables are output that can be introduced into the CAD system for identifying actual routing and potential interferences. In the scanning of pipes and cables, for instance, in confined spaces, if there is a problem with black or shiny items not being scannable, these can be first dusted with a white powder that is easily removed after scanning.

Referring now to FIG. 28(a), it is often better to scan a cable or pipe 341 as a number of stripe sections 342 to 349, rather than as a large number of densely spaced stripes. A stripe sensor can be activated in a first mode to take a single stripe section by the operator activating a button or foot-pedal. In this way, the operator can take a small number of sections to describe the path of the pipe using his expertise to decide when to take sections. For instance, where a pipe joins another pipe, it may be appropriate to capture many more stripe sections 344 to 349. Also, where there is a feature such as a fixing on a pipe, it may be appropriate to capture very dense stripes. A second mode would be capturing stripe sections as fast as the sensor can capture them and displaying them as a surface on the display. A third mode would be a mode in which the operator specifies the distance between the sections, e.g., 5 mm, and the system automatically takes a stripe section every, e.g., 5 mm that the stripe travels in 3D space. One method of determining this distance is to select the point at the average standoff distance in the middle of the stripe, i.e., the center point of the measuring range, and when this point has moved 5 mm, to automatically capture another stripe section. When the operator is scanning pipes and cables, the operator control system should support the simple switching between the three modes.

The intermediate data structure in which the stripe sections are collated could be the standard stripe section structure 303, but includes the changes in mode and the orientation of the probe for each section. In scanning pipes and cables, panel sections along which the pipes and cables run are also captured 342a, 342d. Where there is no contact between the pipe and the panel, there is a jump or break in the stripe section. These can be flagged in the data structure with jump flags 305 and break flags 304.

To be useful to an automobile manufacturer, a high level model should be created and output from this data. A polygonization or surfacing method joins the sections together and can handle the joining of pipes, panels, etc. The result is high level models 350 to 352. If more information is known about the pipe or cable, such as its section if it is constant or its form even if the form's dimensions change, e.g., circular but varying diameter, the model 351 can be automatically expanded to 353. Alternatively, two scanned sides of the same pipe can be automatically joined. This gives the automobile manufacturer the high level model that he needs.

As will be understood to persons skilled in the art, there are various modifications within the scope of the present invention. For example, the color camera does not need to be included. A single camera could be utilized for both color and position sensing. The fitter in the probe could be a narrow band pass filter or a red high band pass filter, as required. The system is adaptable to many types of model generation not just those discussed herein. The data collected by the probe could be used for other applications and could be stored for dissemination elsewhere—for example, by electronic mail. The probe can be a stripe or an area probe. The display can be mounted anywhere depending upon the application requirements.

While the preferred embodiment of the invention has been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.

Crampton, Stephen James

Patent Priority Assignee Title
10089415, Dec 19 2013 Faro Technologies, Inc. Three-dimensional coordinate scanner and method of operation
10122997, May 03 2017 LOWE'S COMPANIES, INC. Automated matrix photo framing using range camera input
8576411, Nov 10 2010 Yazaki Corporation Component position measurement method
8596525, Feb 06 2012 Oracle International Corporation Topographic spot scanning for a storage library
8613386, Feb 29 2012 Oracle International Corporation Contrast spot scanning for a storage library
Patent Priority Assignee Title
4628469, Mar 30 1981 Banner Engineering Corporation Method and apparatus for locating center of reference pulse in a measurement system
4649504, May 22 1984 CAE Electronics, Ltd. Optical position and orientation measurement techniques
4691446, Sep 05 1985 Ferranti plc Three-dimensional position measuring apparatus
4825391, Jul 20 1987 Intel Corporation Depth buffer priority processing for real time computer image generating systems
4982102, Jun 27 1989 Mitsubishi Denki Kabushiki Kaisha Apparatus for detecting three-dimensional configuration of object employing optical cutting method
4993835, Jun 16 1989 MITSUBISHI DENKI KABUSHIKI KAISHA, Apparatus for detecting three-dimensional configuration of object employing optical cutting method
5008555, Sep 18 1987 EATON LEONARD ROBOLIX, INC Optical probe with overlapping detection fields
5090811, May 31 1989 General Electric Company Optical radius gauge
5168528, Aug 20 1990 ITT Corporation Differential electronic imaging system
5189291, May 01 1989 Symbol Technologies, Inc. Bar code reader operable as remote scanner or with fixed terminal
5191642, Apr 09 1987 Intel Corporation Method for efficiently allocating computer resource for real time image generation
5193120, Feb 27 1991 Mechanical Technology Incorporated Machine vision three dimensional profiling system
5198877, Oct 15 1990 BANK OF MONTREAL Method and apparatus for three-dimensional non-contact shape sensing
5251296, Mar 16 1990 Hewlett-Packard Company Methods and apparatus for generating arbitrarily addressed, arbitrarily shaped tiles in computer graphics systems
5255096, Apr 10 1992 Video time code synchronized robot control apparatus
5264678, Sep 26 1991 Science Applications International Corporation Weld-bead profilometer
5268996, Dec 20 1990 Intel Corporation Computer image generation method for determination of total pixel illumination due to plural light sources
5319445, Sep 08 1992 OPTON CO , LTD Hidden change distribution grating and use in 3D moire measurement sensors and CMM applications
5349378, Dec 21 1992 Rudolph Technologies, Inc Context independent fusion of range and intensity imagery
5357599, Jul 30 1992 International Business Machines Corporation Method and apparatus for rendering polygons
5362970, Apr 30 1979 LMI TECHNOLOGIES INC Method and apparatus for electro-optically determining the dimension, location and attitude of objects
5402582, Feb 23 1993 XENON RESEARCH, INC Three dimensional coordinate measuring apparatus
5413454, Jul 09 1993 Mobile robotic arm
5424835, Dec 30 1991 Kreon Industrie High-resolution compact optical sensor for scanning three-dimensional shapes
5611147, Feb 23 1993 Faro Technologies Inc Three dimensional coordinate measuring apparatus
5784282, Jun 11 1993 Bertin & Cie; Sollac Method and apparatus for identifying the position in three dimensions of a movable object such as a sensor or a tool carried by a robot
5812710, Feb 07 1996 Fujitsu Limited Apparatus and method for optical equalization and amplification
5886703, Feb 01 1995 VIRTUS ENTERTAINMENT, INC ; NXVIEW TECHNOLOGIES, INC Perspective correct texture mapping system and methods with intelligent subdivision
6611617, Jul 26 1995 3D Scanners Limited Scanning apparatus and method
7313264, Jul 26 1995 3D Scanners Limited Scanning apparatus and method
20030191603,
DE3938714,
EP159187,
EP328443,
EP348247,
EP550300,
EP589750,
EP750175,
EP750176,
FR2629198,
FR2685764,
GB2264601,
GB2264602,
GB2288249,
JP6186025,
JP6229741,
WO9100115,
WO9000090,
WO9501994,
WO9107511,
WO9008939,
WO9207233,
WO9208103,
WO9606325,
WO9610205,
/
Executed onAssignorAssigneeConveyanceFrameReelDoc
Dec 24 20093D Scanners Limited(assignment on the face of the patent)
Date Maintenance Fee Events
Jun 03 2015M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Aug 12 2019REM: Maintenance Fee Reminder Mailed.
Jan 27 2020EXP: Patent Expired for Failure to Pay Maintenance Fees.


Date Maintenance Schedule
Jan 01 20164 years fee payment window open
Jul 01 20166 months grace period start (w surcharge)
Jan 01 2017patent expiry (for year 4)
Jan 01 20192 years to revive unintentionally abandoned end. (for year 4)
Jan 01 20208 years fee payment window open
Jul 01 20206 months grace period start (w surcharge)
Jan 01 2021patent expiry (for year 8)
Jan 01 20232 years to revive unintentionally abandoned end. (for year 8)
Jan 01 202412 years fee payment window open
Jul 01 20246 months grace period start (w surcharge)
Jan 01 2025patent expiry (for year 12)
Jan 01 20272 years to revive unintentionally abandoned end. (for year 12)