Kinect Fusion

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Kinect Fusion

VictorLamoine
Administrator
Hello,

I'm looking for a way to get a complete point cloud of an object scanned with a Kinect. I don't need the color.

KinFu : I can't (and don't want to) use it because it requires specific hardware (CUDA -> Nvidia)

Kinect fusion (from Kinect SDK) : Looks good but I don't find a lot of information on how to get the point cloud from Kinect SDK to PCL. Maybe using it with https://github.com/mdkus/kinect-mssdk-openni-pcl-bridge/ ? It has only been tested with SDK 1.6 and this SDK does not include Kinect Fusion.

Is there any other PCL application that features a fusion of point clouds ? I don't need to process the point cloud on real-time. It can be done after the scan.

Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

Ber461
If you don't really need real time, you can do it manually. Just circle around the object (or use one of those rotating devices) taking snapshots with tiny intervals, cluster out everything that is not the object, and perform registration with the resulting clouds, one by one. The problem is that this is slow and tiring.

Scanning an object like KinFu  does requires real-time registration, which is very computing expensive, hence the requirement of a good GPU with CUDA. As far as I know, Kinect Fusion uses the GPU too, this can't be done with just the CPU at the moment.

The trunk version of PCL has some tools for cloud processing (https://github.com/PointCloudLibrary/pcl/tree/master/apps), including registration. I tried them some months ago but I got a lot of crashes, it was still a work in progress.
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

VictorLamoine
Administrator
I want the registration process to be automatic. For example, a robot is circling around the object (with a pre-defined trajectory) and the computer outputs a point cloud of the object.

Kinect Fusion is quite good from what I experienced. It also requires a "decent" GPU but it's a lot less specific than CUDA.

I've looked at the in hand scanner. It works onyl with small objects and I don't need the segmentation between hand / objects.

I'm looking for a program that allows me grab an register point clouds from an OpenNI device. The registration doesn't have to be real-time though it is a plus.
I'm looking for examples/projects/directions of such a program , I don't want to re-invent the wheel :)

I think that something like pairwise-incremental-registration is a good start.
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

Ber461
Yes, I tried that tutorial and got good results with the code.

For the task you propose, you would have to write a program that fetches and saves frames as the robot is circling around the object, at small intervals (i.e., a few degrees between each, for this you would need to setup the robot/arm, the table, etc). You should then use a method similar to that tutorial to iteratively register one cloud with the next, until they are all registered. Finally, you should perform some preprocessing, and cluster the object out. In order to automatically do this, you would have (for example) to detect the table the object was on, and filter out all points not sitting on it.

I think it could be done, with a bit of work. Registration relies on finding good (and many) correspondences, which is hard if your scene is very clean (like a single table with an object resting on it would be). But, if you add more objects to make the scene feature-rich, then this would add clutter in the clustering step.

I'm sure that many people here have already tried or implemented a solution like this. Maybe they could give us some directions?
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

saimanoj18
Here is what you are looking for.

CopyMe3D: Scanning and Printing Persons in 3D (J. Sturm, E. Bylow, F. Kahl, D. Cremers),In German Conference on Pattern Recognition (GCPR), 2013


You could ask the authors if its available for public. If yes, please pass it.

But other open source implementations which can do almost the same thing with some post processing are given below

I would also suggest you to take a look at RGB-D SLAM, CCNY RGBD TOOLS, which give octomap and also point cloud representation but they donot segment the objects but provide the whole scene.
 



With all Good wishes,
Sai Manoj Prakhya


On Thursday, 23 January 2014 5:52 PM, Ber461 <[hidden email]> wrote:
Yes, I tried that tutorial and got good results with the code.

For the task you propose, you would have to write a program that fetches and
saves frames as the robot is circling around the object, at small intervals
(i.e., a few degrees between each, for this you would need to setup the
robot/arm, the table, etc). You should then use a method similar to that
tutorial to iteratively register one cloud with the next, until they are all
registered. Finally, you should perform some preprocessing, and cluster the
object out. In order to automatically do this, you would have (for example)
to detect the table the object was on, and filter out all points not sitting
on it.

I think it could be done, with a bit of work. Registration relies on finding
good (and many) correspondences, which is hard if your scene is very clean
(like a single table with an object resting on it would be). But, if you add
more objects to make the scene feature-rich, then this would add clutter in
the clustering step.

I'm sure that many people here have already tried or implemented a solution
like this. Maybe they could give us some directions?



--
View this message in context: http://www.pcl-users.org/Kinect-Fusion-tp4031829p4031856.html

Sent from the Point Cloud Library (PCL) Users mailing list mailing list archive at Nabble.com.
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users



_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

dim_tz
I wouldn't count on finding the source code of the 'CopeMe3D' paper
(which works great by the way, I also saw a live demo of it),
as this project is now a spin-off. The paper can be found easily though online.


On Thu, Jan 23, 2014 at 11:06 AM, Sai Manoj <[hidden email]> wrote:
Here is what you are looking for.

CopyMe3D: Scanning and Printing Persons in 3D (J. Sturm, E. Bylow, F. Kahl, D. Cremers),In German Conference on Pattern Recognition (GCPR), 2013


You could ask the authors if its available for public. If yes, please pass it.

But other open source implementations which can do almost the same thing with some post processing are given below

I would also suggest you to take a look at RGB-D SLAM, CCNY RGBD TOOLS, which give octomap and also point cloud representation but they donot segment the objects but provide the whole scene.
 



With all Good wishes,
Sai Manoj Prakhya


On Thursday, 23 January 2014 5:52 PM, Ber461 <[hidden email]> wrote:
Yes, I tried that tutorial and got good results with the code.

For the task you propose, you would have to write a program that fetches and
saves frames as the robot is circling around the object, at small intervals
(i.e., a few degrees between each, for this you would need to setup the
robot/arm, the table, etc). You should then use a method similar to that
tutorial to iteratively register one cloud with the next, until they are all
registered. Finally, you should perform some preprocessing, and cluster the
object out. In order to automatically do this, you would have (for example)
to detect the table the object was on, and filter out all points not sitting
on it.

I think it could be done, with a bit of work. Registration relies on finding
good (and many) correspondences, which is hard if your scene is very clean
(like a single table with an object resting on it would be). But, if you add
more objects to make the scene feature-rich, then this would add clutter in
the clustering step.

I'm sure that many people here have already tried or implemented a solution
like this. Maybe they could give us some directions?



--
View this message in context: http://www.pcl-users.org/Kinect-Fusion-tp4031829p4031856.html

Sent from the Point Cloud Library (PCL) Users mailing list mailing list archive at Nabble.com.
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users



_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users



_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Kinect Fusion

VictorLamoine
Administrator
After a little big of investigation the best solution I have found is kinfu_app. We will deal with the constraint of a nVidia high end GPU for the moment.

In addition kinfu_app is ready to use and thus saves me a lot of time.

Thanks for your help