Kinect 3D Scanning: Difference between revisions
No edit summary (change visibility) |
No edit summary (change visibility) |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 8: | Line 8: | ||
<li>OpenNI (http://75.98.78.94/) |
<li>OpenNI (http://75.98.78.94/) |
||
</ul> |
</ul> |
||
Both methods (drivers) were tested before the initial prototype of the software. OpenNI driver is found to be more |
Both methods (drivers) were tested before the initial prototype of the software. OpenNI driver is found to be more suitable. |
||
== '''Methods''' == |
|||
=== '''Point Cloud Registration''' === |
|||
Among Point cloud registration methods, which are used to minimize the distance of two point clouds with common features, Iterative Closest Point algorithm was the most feasible one for my project. I tried implementing a prototype for Iterative Closest Point algorithm using the implementation from PCL library. It didn't work out as I expected. So I tried another method which is more feasible for me. |
|||
=== '''Augmented Reality Markers''' === |
|||
Other method I tried implementing is the Augmented Reality Marker method. Idea was to track position and rotation of those markers and estimate the position and rotation of the camera from that information. After my initial prototype it also didn't give me a satisfactory result. |
|||
== '''Software''' == |
|||
=== '''Prototype''' === |
|||
I first tried implementing my own software using the methods explained briefly. I used java processing (http://processing.org/) framework to quickly and easily prototype my future application. I didn't get satisfactory results but I included a demo of all my considerable achievements in the CD. |
|||
=== '''RGBDemo''' === |
|||
I also did some research on previous applications that are developed for the same purpose. I found a package of some libraries and some demos called RGBDemo which is still being developed by Nicolas Burrus. |
|||
You can find all the information about the project here: http://labs.manctl.com/rgbdemo/ |
|||
I tried modifying the code slightly to make it work with a bigger setup. From scan_markers.cpp you can find a name space called opt. You can change all the dimension and spacing information to make the software work with a different setup. I also wrote a project file for the scan-markers project to make it work with the native IDE of Qt which I was familiar with. You can find the converted and modified project files in the CD. |
|||
== '''How To''' == |
|||
=== '''Compile''' === |
|||
To compile you should probably change some include and library paths from the .pro file in the Qt project directory. Project has some dependencies which you may have to compile from source which are PCL, OpenCV, OpenNI, nestk. You can also compile it using CMake. |
|||
=== '''Run''' === |
|||
There is no special thing to run the project but to use the modified project you should use my setup or you have to modify the code for your setup from opt namespace in scan_markers.cpp file. My setup: |
|||
Marker Size: 9cm |
|||
Marker Spacing X: 36cm |
|||
Marker Spacing Y: 37,5cm |
|||
Latest revision as of 15:02, 17 May 2012
Description
This page provides all of the information about 3D scanning project which was started as part of the Virtual BU project to provide an easier way to scan objects and import them to the virtual museum. Selected device for the objective is a Microsoft Kinect device that is made for Microsoft Xbox game console.
Device
There two product families of the device. Both (Xbox, Windows) versions of the device can work with the software that was developed for this project. There are two ways to connect the first version of the device to a computer with a Unix, Linux or a Windows operating system. They are:
- OpenKinect (http://openkinect.org/)
- OpenNI (http://75.98.78.94/)
Both methods (drivers) were tested before the initial prototype of the software. OpenNI driver is found to be more suitable.
Methods
Point Cloud Registration
Among Point cloud registration methods, which are used to minimize the distance of two point clouds with common features, Iterative Closest Point algorithm was the most feasible one for my project. I tried implementing a prototype for Iterative Closest Point algorithm using the implementation from PCL library. It didn't work out as I expected. So I tried another method which is more feasible for me.
Augmented Reality Markers
Other method I tried implementing is the Augmented Reality Marker method. Idea was to track position and rotation of those markers and estimate the position and rotation of the camera from that information. After my initial prototype it also didn't give me a satisfactory result.
Software
Prototype
I first tried implementing my own software using the methods explained briefly. I used java processing (http://processing.org/) framework to quickly and easily prototype my future application. I didn't get satisfactory results but I included a demo of all my considerable achievements in the CD.
RGBDemo
I also did some research on previous applications that are developed for the same purpose. I found a package of some libraries and some demos called RGBDemo which is still being developed by Nicolas Burrus. You can find all the information about the project here: http://labs.manctl.com/rgbdemo/ I tried modifying the code slightly to make it work with a bigger setup. From scan_markers.cpp you can find a name space called opt. You can change all the dimension and spacing information to make the software work with a different setup. I also wrote a project file for the scan-markers project to make it work with the native IDE of Qt which I was familiar with. You can find the converted and modified project files in the CD.
How To
Compile
To compile you should probably change some include and library paths from the .pro file in the Qt project directory. Project has some dependencies which you may have to compile from source which are PCL, OpenCV, OpenNI, nestk. You can also compile it using CMake.
Run
There is no special thing to run the project but to use the modified project you should use my setup or you have to modify the code for your setup from opt namespace in scan_markers.cpp file. My setup: Marker Size: 9cm Marker Spacing X: 36cm Marker Spacing Y: 37,5cm