2
votes

I was working on a project that involves creating a 3D model of an object using the Microsoft Kinect. I was planning to use the Microsoft Kinect SDK, OpenNI to capture cloud points of the object at different angles and use ICP to map and create the 3D of the object. Please correct me if I am wrong in my statement above. Since I am a amateur at this I really don't know if I am going in the right direction.

My hardware details are - Microsoft Kinect, Windows 7 - 64-bit, Microsoft Visual Studio 2010, Microsoft Kinect SDK, OpenNI,Primesense,NITE(all installed using .exe or self extractors, I did not use cmake...I have kind of gotten fed up of using that! since i run into so many errors!)

As of now, I have been able to connect my Kinect and using some demo tutorials online I was able to view the RGB data and the Depth map of the Kinect. I was reading about OpenNI and was not able to make much progress on that either. (There is code in C++ and C#) Now the questions-

  1. How do I get the 'cloud points' of each image I take of the object? should I use OpenNi for this?

  2. After getting the cloud points of each image I plan to run the ICP algorithm. Any details or links I can use to learn about this and implement it?

  3. After running the ICP algorithm, I need to display the recreated 3D, so should I do it using Visual Studio 2010 itself?

  4. I came across some softwares like 'Meshlab' which help create the 3D using .ply files..the .ply data is obtained from the depth map of the Kinect...Is this another direction I could look at?

Thanks Aditya

1

1 Answers

2
votes
  1. I'm not too familiar with Kinect as I haven't used it, but http://borglabs.com/blog/create-point-clouds-from-kinect could be helpful. I do seem to remember reading that you'll want to calibrate the cameras in Kinect. http://www.vision.caltech.edu/bouguetj/calib_doc/ might give you a good start in determining the camera calibration parameters. http://opencv.willowgarage.com/wiki/ is a C++ library that provides a C/C++ implementation of camera calibration. http://nicolas.burrus.name/index.php/Research/KinectRgbDemoV6 looks like a more Kinect-specific solution.

  2. http://vtk.org/ provides an implementation of ICP. http://pointclouds.org/ contains registration algorithms as well.

  3. VTK provides classes that wrap OpenGL and make it easy to visualize data. Perhaps some of the other libraries I've mentioned can do this too, but I'm not as familiar with them.

  4. PLY files are just one of many 3D file formats... it's a general-purpose container that can hold vertex coordinates, and polygons formed by connecting the vertices. Again, VTK provides classes for reading/writing PLY, as well as many other 3D file formats.