# Make your own 3d scanner!

My goals for this project were as follows:
Make scanner which
*could accurately and correctly produce computer models in 3D
*would work for objects under 1' x 1' x 1' in size
*wouldn't cost more than \$20 on the project (Materials I have lying around don't count towards the cost, but including these materials, the scanner still costs only about \$100.)

The final product works pretty well, and I hope to improve it's usability in the future by further automating it's performance and tweaking the software.
Remove these ads by Signing Up

## Step 1: The Basic Idea...Overview

In order to locate a point in 3d space, we need to describe one of several things. The simplest would simply be to give three numbers to describe it's position relative to another point in space. This is the format used by most computer models. Another way to describe the point would be to use three planes, or a plane and a line. What you'll see is that it's easiest to describe points in the third way, then convert them to the first to save them to standard format. So the question becomes, how to find the plane and the line? As it turns out, the first question is in the hardware, and the second in the software.
sunlight3053 years ago
It's a very interesting thing,i want to know more about it,can you send me the source code.Thank you very much.My email:sunlight305@hotmail.com.
Dentroman765 (author)  sunlight3053 years ago
Hi! Unfortunately, a recent hard drive failure means I don't have the Matlab code anymore. I'm putting together python code to do the same thing, since more people will be able to use this. Until I get that up, there's a fairly detailed description of how all this works at the link below. https://sites.google.com/site/oursler3dscanner/software
~Will
Pustekuchen6 months ago

I try to build one, but I don't know how to convert the 2-D Points of my line in world coordinates. How can I make this?

Thanks

mostafa qandeel9 months ago

how can i communicate with you?

golfclub1 year ago
Hi.
Great job
May i have the code?
golfclub4u2win@hotmail.com

TKS
Yettimania1 year ago
Did you ever complete this in python and can you post the matlab code? Did you use the Hough Transform here? I'm little confused as to does the transform only return linear lines?
birlan001 year ago
Hi,

Could anybody give me the code ?

BRGDS,
birlan
pierceRom2 years ago
Is there any way you could supply me your code please ?? Im doing a research project on this topic and it would be the biggest help if you could ?? My email is pierce jonRomero35@hotmail.com
2 years ago
Have you been able to get the code? I am looking for the Processing source! Thanks.
poikilotherm2 years ago
Knex wheels! I love it!
hasemar3 years ago
I've seen this done before using a stationary mount for the laser (casting a vertical line) and rotating the object around using a turret of some sort, (in that case a satellite dish motor. Have you considered this? That way you could get a full 3d model
mac user22343 years ago
that is SO COOL!!!!!!!!
Dentroman765 (author)  mac user22343 years ago
Thanks!
3 years ago
sethcim3 years ago
Good, but needs equations / diagrams / algorithms. You mention it, but never show.
Seanny3 years ago
Hi. Great project !
is it possible to see your notes or to have little diagrams or pseudo code for the triangulation part ? I think there are few people/hobbyists that can buy matlab. All 3d scanners use this and I despair to see a simple implementation.
Dentroman765 (author)  Seanny3 years ago
Yes! I have simple notes for all of this. My apologies for the poor documentation. I never thought anyone would actually read this. It's in need of a rewrite. Until I get around to it (I'll attach the code in python too.), here's a more detailed step by step I wrote for my Application to college: https://sites.google.com/site/oursler3dscanner/software

I'll try to do a proper write up over the weekend, or barring that after finals. Feel free to comment here or PM if you have any specific points of confusion.

~Dentroman (aka Will)
3 years ago
Have you considered Octave? It's a sort of open alternative to Matlab. http://www.gnu.org/software/octave/

The beers you could buy with the spare Matlab license money would go a long way towards dulling the pain of learning yet another language. In fact you'd probably need to go to rehab... :)
3 years ago
Dentroman765 (author)  Seanny3 years ago
Whoops. :p Try this.
ekaggrat3 years ago
i created something like this several years ago... got preti good results with only matlab.. but used fastrbf for smoothening the mesh

http://www.ekaggrat.net/explorations/laser-scanner/
ronibar023 years ago
Thank you for the great explanation.
I am looking for a scanner that can scan the bottom of the foot, and use that information for carving insoles by a cnc system. Are you interested in making a prototype and develop the software for that? If you are, we can discuss how much it would cost.
3 years ago
the problem is that those who need inserts need support for the foot not a perfect fit
pkmn4 years ago
(removed by author or community request)
Dentroman765 (author)  pkmn4 years ago
Yes it is! I find they are very useful, as the do a wonderful job with tracks once the rubber is removed, and are quite easy to interface with simple screws and bolts.
cyberpageman4 years ago
Nice Instructable, but I missed something.  How do you mover the laser?  Do you push it along the tracks by hand?  And as it is moved so it illuminates the object in, say, the y axis, then what?  I assume the camera sees the light from the reflection from the entire y axis.  What about scanning the x axis?  How do you do that?  Sorry if I'm dense.
Dentroman765 (author)  cyberpageman4 years ago
Right now, I'm just pushing it along by hand, and having the software figure out where the laser is in post-processing. I also don't scan the x-axis: the computer is interpolating (a) the position of plane, and (b) points on surface of that object in that plane. It uses this to make a 3-d point cloud.
In a later build, I might add a turntable, and then I could scan multiple axis, but that isn't really necessary to get a scan.
4 years ago
Thanks, Dentroman765.  I think I get part of it--you use the reference points to determine where the laser beam is on the x axis.  But I still don't get how the computer determines the points on the surface of the object, because the reflected intensity of the light must be the sum of all the reflections from the top to the bottom of the object.
Dentroman765 (author)  cyberpageman4 years ago
I'll see if I can explain that a bit then.
The light from the laser beam forms a plane, at least where the camera is concerned. Try drawing a cross section of an object on a piece of paper, then turning the paper so it's at an angle: the cross section will be distorted, but so long as you know that it is on the plane of the paper, it's fairly easy to work out the shape.
The computer analyses the curve of light it sees to make the points in this same way.
Your observation about reflections is a good one: I quickly discovered that reflective objects do not work well with this method, and that the light must be just right to get good quality scans.
4 years ago
Hi Dentroman765,

Thank you very much for going to all the trouble of explaining the system to me.  I think I must be getting senile from not seeing it immediately; after all, you repeatedly said that the detector was a camera, but my mind converted it to "photodetector."  I can see that your camera setup would work perfectly.  Thank you for your patience with me.
For a couple of years, I have been working on an acoustic scanner with a single microphone that I move in the x and y directions to scan an acoustic field.  I got so blinded by that approach that I couldn't see yours.  Very sorry.

Thank you again for your interesting instructable.
Dentroman765 (author)  cyberpageman4 years ago
No problem at all! Thank you for reading through!
franklinonline4 years ago
what is your software called or is it david?
Dentroman765 (author)  franklinonline4 years ago
I've been using matlab, but all you really need is a way to work with videos. Matlab is overkill.
jeff-o4 years ago
This project has a lot of potential.  If you do go ahead and implement some of the ideas you mention on the last page, I'd very much look forward to seeing the results!
Dentroman765 (author)  jeff-o4 years ago
Thank You! I hope to do everything I mentioned on the last page, but I'll probably have to wait until summer when my schedule clears up a bit.
4 years ago
I hear ya!  There just isn't enough time in a day...