Hi Michael,
Here's what I've got so far for my term project. I'd like to write a program which constructs 3d models of objects placed in front of my Kinect RGBD(Depth) camera.
- read an RGBD (RGB and depth) point cloud from my Kinect (OpenNI or libfreenect)
- convert that point cloud into a mesh object (PCL or VCG)
- implement a few subdivision schemes (Butterfly or Kobbelt √3?) on the resulting mesh object (straight C++)
- import the resulting subdivided mesh objects into a viewer program (Meshlab or Blender)
- Optional goals:
- implement a point cloud to mesh object converter in C++ using isosurface extraction or front meshing algorithms to replace PCL/VCG from #2
- paint the final mesh object using a Blender python script and the RGB data from the initial point cloud in #1
- implement an un-subdividing scheme to generate lower polygon count models
- put those models in a dorky little game using Blender (I've used the Blender game engine before, a little, and there are many Free sample games available to work from)
I plan to spend the next couple of weeks learning as much as I can about all of the tools mentioned below, in hopes of using them in my elec 484 and elec 486 projects, and just for fun.
My proposed schedule is:
1. Spend the next two weeks learning as much as I can about all of the tools mentioned below, in hopes of using them in my elec 484 and elec 486 projects, and just for fun. Have a working prototype of this project running which does not involve me implementing any course related algorithms (Blender already supports Linear and Catmull-Clark subdivision. If my implementations are even remotely efficient I'll be submitting them to the Blender project :) )
2. If I've succeeded, spend the next month implementing Butterfly and Kobbelt √3 subdivision, and after that as many secondary goals as time allows
3. If I've failed to get a mostly working prototype in the first two weeks, I'll abandon the point cloud to mesh object conversion until the subdivision schemes are working properly.
Terms:
- OpenNI Natural Interaction API (includes Kinect plugin & library) http://www.openni.
org/ - freenect (Kinect plugin & library) http://openkinect.
org/wiki/Main_Page - KinectRgbDemo: free Kinect freenect.lib demo which saves Kinect data as point clouds or as mesh surfaces (sample mesh surface screenshot attached) http://nicolas.burrus.name/
index.php/Research/ KinectRgbDemoV5 - PCL (Point Cloud Library) – includes acquisition, filtering, feature estimation, surface reconstruction, registration, model fitting, and segmentation http://www.ros.
org/wiki/pcl - VCGLib: supports isosurface extraction and advancing front meshing algorithms http://vcg.
sourceforge.net/ - Blender (3D modelling / game engine / content creation / etc toolkit which I used a fair bit in high school) http://blender.org
- Blender import scripts (.ply supported) http://wiki.
blender.org/index.php/ Extensions:2.5/Py/Scripts
Attachment: (image screenscapped from youtube user MontyVaca's video)
p.s. I submitted my request for patient information form today! I'm gonna have a CD of xray images etc. that I have full legal ownership of for use in projects. I'm excited :)
No comments:
Post a Comment