Tuesday, January 24, 2012

My Experience with Kinect as a 3d Scanner.

I've been playing around with the kinect trying to get it to work as a 3d scanner. So, far the results go from underwhelming to promising. The question is not whether the Kinect can work as an adequate 3d scanner for many uses, but rather the lack of software capable of doing it in a manner that doesn't require rigging the kinect or multiple tries, or stitching scans together. In other words the goal and the only goal I'm interested in is a scenario by which you simply pick up the scanner, adjust it in software for the area you want it to scan (bounding box), and then simply rotate it, or the object inside that box, and output a 3d mesh.

Currently no program is complete in that regard.
The best as far as probably ending in a final product that would fulfill most of that is the kinfu implementation based on cloudpoints.org reconstruction of the microsoft kinectfusion demonstration and paper. It does a pretty good job of keeping things aligned when you are free form scanning. All the others I've tried can not keep aligned as you move the kinect around, even if you move it at an agonizing slow rate. So, if you are trying to scan an object and only need the 3d data, then kinfu is for you. Right now I just have a version compiled by someone else, in that version there isn't any color data in the output. You can save it as a ply file or in there new pcd format, but right now, the only one I've used is the ply format, as none of the programs support their format.

There is currently no option to mesh or do anything to the point cloud in kinfu, so what I'm using is Mesh lab. Once it is in mesh lab you can turn it into a mesh, and from there I'm currently importing it into sketchup, because I'm new to all this and that is where I'm at in my level of knowledge. Blender just doesn't make sense to me yet, but that is a free program that is probably better suited.

Here is me using skanet to attempt to 3d model my desk, the frame to frame 3d modeling works well enough, however, it simply loses it, when you start to turn or ever jerk the kinect. In the end, the present implimentation is far far to sensitive and prone to errors in the 3d model to make it usable for me, in any use other than a simple straight on non moving scan.

You can see how slowly I'm trying to move, and there are still 3d anomalies being produced.



Here is Kinfu, it seems to track quite well overall, but the build I have doesn't show color data at all, and it only scans a smaller area. This is because supposedly it is all done on the GPU, and in order to use it at all you need an nvidia card, and the card has to have over 750megs of memory and cuda support, though all of that is really just determined by this build, and I haven't tried at all to change any options when loading it, so you may be able to pass some parameters. I don't know.

0 comments: