Build a Rotisserie Scanner With Legos
WalkingBear writes "All you 3d geeks out there should take a look at this. This guy has built a 3d scanner (scans 3d objects resulting in a 2d cylindrical image map) out of a flat bed scanner and Lego. Also has a turntable style for use with digital cameras."
Yes, that's what he did. I know Slashdot protocol is to not read the article, but try to make an exception for the summary of the article, at least...
Karma: Oldschool
The spinning part and a mounted camera is a good start. What is missing is a set of sensors that measure distance to the spinning object, at various heights.
This is actually not completely impossible to do (but a royal pain), I have heard of guys who did it in lab classes in college. The most troublesome part is suppose to be converting all the distance readings into a useful data format.
Tor
Until it stiches the images automatically and looks good I won't be impressed.
He says he is having problems with lighting, that's because the lighting and the person have to remain stationary while the camera goes around the object. That way the shadows will stay the same. Spot the funky shadows in my images.
Yeah, he admits all that. His problem was that the scanner does a calibration every time, which requires motion of the scanning element relative to the bed. It's got some patern in there. It turned out to be easier to make this amusing rig that rides along and spins the object than it was to try to mount the cal patern on a rotiserie made from the servo that moves the scan element. If the cal paternd noes not read, the device sends an error message and that's it. I'm impressed that the cal worked despite the light leaks.
The whole reason he tried this to begin with was that his hand rotation of the skull was very impressive. I imagine it took much less work than all of that stitching and editing.
It was nice of him to share the experience. We all now know what problems to expect when you take apart a scanner and can imagine solutions.
Friends don't help friends install M$ junk.
Okay, if you want a 3D mesh, here's what I would do:
(1) Encase the thing in a black box [or work at night], and put a light on the y-axis of the scanner, and a red light on the axis of the rotisserie, near it, but not inside it [of course]
For your lights, use a good small fluorescent bulb.
(2) Run a normal scan.
(3) Light the thing from the North with blue light, and from the west with red light. Keep each light as *close* to the rotisserie as possible, and on the scanner side [of course].
(4) Run another normal scan.
Now, let's just take the blue light as an example. The intensity of the light decreases with the square of the distance from the light as it impinges on the skull's surface. So the brighter the blue-shift of the colors, the closer the point is to the blue light. Same goes for the red light. [The distance from the point to the scanner is not constant, and will affect this, but can be calculated.]
So align your pictures, and then you subtract off the previous exposure, leaving your "red/blue intensity map."
Now you have to modify the result of this by the reflectivity of the model -- but that information is contained in the original scan. Base Intensity * Reflectivity = Color intensity, so the reverse applies: calculate the distance to and from the model [start with an estimate: the rotisserie height, but recursively refine] to get the Base Intenisty, read the Color Intensity from the original scan, and that will give you the local reflectivity. Divide your red-blue map by the reflectivity, of each particular point, and you get back the Base Intensity of your red-blue map.
Take this intensity map to a png file, and then using some known values [based on the geometry of your setup, and some basic measurements] calculate the xyz coordinates of each point.
Run this routine recursively 2-3 times to get better ("good enough") accuracy.
For even better accuracy, you could use white light, but vary the intensity of your x-axis and y-axis bulb, and read the differences. Use that information to calculate the distance from the bulb to the model to the scanner.
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's