Step 4: Projector-Camera Configuration

We'll use a "portrait" setup for this scan. This means that the projector and camera will be mounted on their sides. Projectors tend to have some internal lens shift: when you place a projector on a table, it projects the image "up" to a screen rather than shooting straight. To compensate for this, make sure the camera's optical axis is tangential to the surface the projector is hitting. In other words, if the projector has been rotated clockwise, keep the camera to the right of the projector.

At this point, the image planes of the camera and projector are approximately rectified: a horizontal line from the projector is a horizontal line on the camera. A white wall is helpful as a backdrop for testing that the camera and projector are aligned (in general, more reflective colors like white are easier to scan than darker colors).

Once aligned, the camera's perspective needs to have a vertical offset from the projector's perspective. Move the camera up: enough so you can see the curve in the cosine pattern being projected. Too much, and you'll be capturing a lot of shadows (areas where the projecting isn't projecting) or missing areas where the projector is projecting.

For mounting, you can use pretty much anything that is suitably stable. I've used everything from spider projector mounts, to desks with tape and cardboard, to music stands. The main goal is making sure that the geometry doesn't change while you're capturing each pattern.
<p>Thats breathtaking...</p>
<p>Ok, so I placed the pictures into ThreePhase, and it isn't doing anything. All it does is open to a white screen. What is the solution?</p><p>Here are my three test pictures:</p>
<p>Its trendy :)</p>
<p>yep ..while searching on the internet i found this structured light scanner software, well yeah it coast me 50 euro as i remember but it works perfectly for me especially that it does not force the user to use a DSLR camera (like the flexScan3d software) or a very precise video projector ( like David3d scaner soft force you to use )</p><p>i guess it s the most cheapest 3D scanner soft now</p><p><a href="http://rghost.net/private/7TGTnVFLw/3e2648710775d90835ef717f5ec6d1f0" rel="nofollow">http://rghost.net/private/7TGTnVFLw/3e2648710775d9...</a></p>
<p>I started working on a structured light scanner using a SHOWWX as <br> well. I&rsquo;m planning on replacing the red laser in the projector with an <br> infrared one, with a corresponding filter on the camera. This way, the <br> scan is invisible to the human eye.</p><p>It also leaves the blue and green lasers in place to allow for <br>projection onto the scanned surface in real time (well, with a few <br>hundred millisecond delay). For example, you could place a white sphere <br> in front of the scanner, find its shape and location, and project the <br>Earth onto it. As you move the object, it continues to be tracked, <br>allowing your projection to stay onit.</p>
<p>HI, New to this 3d scanning. I'd like to test the 'ThreePhase' software.</p><p>The images in the pattern folder are 1024*768. This is not the native resolution of my beamer. Could/ should I make new patterns in the native res. of my beamer for better result?</p><p>And the line pattern is not 'sharp'. Why is this?</p>
<p>Yes. I have an idea. </p><p><a href="http://www.meetup.com/LA-Computer-Vision-Lab/messages/boards/thread/42191562" rel="nofollow">http://www.meetup.com/LA-Computer-Vision-Lab/messa...</a></p><p>mentions that when &quot;Processing&quot; moved from v1 to v2, ThreePhase broke, and &quot;Richard&quot; of the above-named URL came up with a crowbar solution: cut out the controls entirely, by:</p><p> * renaming Controls.pde to Controls.pdeRENAMED</p><p>* moving its [four, public float] global variables over into ThreePhase.pde</p><p>* adding a line to top of PhaseUnwrap.pde: </p><p>&quot;import java.util.PriorityQueue;&quot; [so THAT's where the class or type is...]</p><p>For my part, I also:</p><p>* added this to the bottom of ThreePhase.pde's void setup() method, to automatically get a PLY mesh output (which I can view in meshlab for example):</p><p>&quot;exportMesh = true;&quot;</p><p>(under &quot;update = true;&quot;)</p><p>* commented out the &quot;if(takeScreenshot) {&quot; in the same method because it seems to call the camera</p><p>* copied the (gone-missing from Controls.pde) &quot;String getTimestamp() {&quot; method from Controls.pde into Export.pde (because it complained when trying to create the export)</p><p>This is me using a meat hook on a crowbar--because I don't know bupkus about object-oriented programming or &quot;processing&quot; (what a name for something they knew in advance people were going to have to google)</p><p>Anyways, with this sort of bumbling, I was able to get past the errors and get a ply file (stored in the same dir with the PDEs).</p><p>[Idle thought: wonder what the output would look like taking the three &quot;patterns&quot; as the three &quot;images&quot;: NULL image, right?]</p><p>Good luck. [and Thanks, Richard, over on meetup!]</p>
<p>BTW, meshlab showed a &quot;phase error&quot; in the result: the entire right shoulder is raised compared to the left.</p>
<p>Very nice. Thanks</p>
<p>Updated for processing 2.X:</p><p>https://github.com/kippkitts/3PhaseScanning/tree/master/ThreePhase </p>
<p>I am also getting the error &quot;Cannot find class or type named PriorityQueue&quot;</p><p>Any ideas?</p>
<p>Same issue (also with LinkedList in ThreePhase-1): I put:</p><p>import java.util.*;</p><p>In any source, but a new error appeared: java.lang.NullPointerException :/</p>
<p>Thats cold</p>
<p>Nicely done... Amazing instructable</p>
<p>Hey Guys,</p><p>if I have just a &quot;single-dot-laser&quot; I can determine X, Y and Z in help of the Triangulation.</p><p>So Z is Z = (f*b*tan(alpha))/(f+x*tan(alpha))</p><p>where</p><p>f -focal length</p><p>b - Laser Camera Disance</p><p>alpha - Laser Angle</p><p>So I have a Problem there. I calculated x because I need it in mm. So I did the following:</p><p>x = (x_pixel/pizel_widh_Image-0.5)*SensorSizeX</p><p>But my measurement are wrong. I am sure the Formula for Z is right. But I am not sure about x. Is there some one who can help me?</p>
<p>Its nice<br><br></p>
<p>Its extraordinary</p>
<p><br>Its exceptional :)<br></p>
<p>TOO GOOD</p>

About This Instructable




More by kylemcdonald:Structured Light 3D Scanning Nandhopper 1-Bit Noise Synth Lo-fi Arduino Guitar Pedal 
Add instructable to: