Point Cloud small hole filling

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

Point Cloud small hole filling

Walter "Myzhar" Lucetti-2
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Point Cloud small hole filling

Zoltan-Csaba Marton
Hi Walter,

it is not the most straightforward way, but you can use GridProjection
from the surface module. Using the resolution and padding size
parameters you can influence the density of the resulting cloud and the
size of the holes that get filled.

There is no tutorial for this yet, but you can take a look at the
test_surface.cpp unit test and the presentation of Rosie here:
http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds

As you will see, you will get a PolygonMesh as a result, so a list of
points and a list of polygons that they form. You can convert the points
back to a point cloud (please see my previous mail on the list).

There is another method as well, based on MovingLeastSquares, but it is
unfortunately not ported to PCL yet. Hopefully soon.

Cheers,
Zoltan

On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
> Hi all,
> are there any methods to fill small holes in point clouds?
>
> Thank you
> Walter
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users


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

Re: Point Cloud small hole filling

CARMELO VELARDO
Hi Zoltan.


How about the performance of such algorithm (especially time performance)?
It is feasible a use for quasi-hopefully-real-time applications?

I would like to know it before investing in including it in my project.


Thanks a lot.

CarmeloVELARDO

www.velardo.org




On Wed, Apr 27, 2011 at 1:53 PM, Zoltan-Csaba Marton <[hidden email]> wrote:
Hi Walter,

it is not the most straightforward way, but you can use GridProjection
from the surface module. Using the resolution and padding size
parameters you can influence the density of the resulting cloud and the
size of the holes that get filled.

There is no tutorial for this yet, but you can take a look at the
test_surface.cpp unit test and the presentation of Rosie here:
http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds

As you will see, you will get a PolygonMesh as a result, so a list of
points and a list of polygons that they form. You can convert the points
back to a point cloud (please see my previous mail on the list).

There is another method as well, based on MovingLeastSquares, but it is
unfortunately not ported to PCL yet. Hopefully soon.

Cheers,
Zoltan

On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
> Hi all,
> are there any methods to fill small holes in point clouds?
>
> Thank you
> Walter
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users


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


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

Re: Point Cloud small hole filling

Radu B. Rusu
Administrator



On 04/27/2011 08:02 AM, CARMELO VELARDO wrote:
> Hi Zoltan.
>
>
> How about the performance of such algorithm (especially time performance)?
> It is feasible a use for quasi-hopefully-real-time applications?

This might be an orthogonal answer, but... I couldn't help myself :)

"real-time" is a very vague word. Unless you precisely determine your time constraints, real-time can mean anything.

For example, all PCL methods are real-time with respect to a system that sweeps 2D laser scans in the world in order to
acquire point clouds. :) The acquisition time of "one frame" is 10 seconds, and if you manage to process that frame in
under 10 seconds, then you are "real-time".

Of course, the same doesn't apply to a fast 30fps camera, where real-time is 1/30 of a second processing time.

In general, while we try our best to optimize certain algorithms, there is a limit. x86 wasn't made for this, and this
is the reason why PCL 2.x will have a GPGPU backend. It's like saying I want SIFT descriptors computed on a 3MP image
done at frame rate today (April 27 2011) on a regular CPU. :) Not going to happen.

Another thing that you could always do, is try to tweak those algorithms by sending less data in (downsampling), giving
up precision for speed, etc.

Cheers,
Radu.
--
Point Cloud Library (PCL) - http://pointclouds.org
_______________________________________________
[hidden email] / http://pointclouds.org
https://code.ros.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Point Cloud small hole filling

Zoltan-Csaba Marton
In reply to this post by CARMELO VELARDO
Hi Carmelo,

the grid projection approach might not be fast enough for you, but I am
sure it can be optimized a lot if someone puts some time in it. The good
thing there is that it produces a quasi-even distribution, unlike some
quick solutions :)

We will definitely work on alternative methods for 2.0 -- if you're
interested, feel free to help out :)

Cheers,
Zoltan

On Wed, 2011-04-27 at 17:02 +0200, CARMELO VELARDO wrote:

> Hi Zoltan.
>
>
> How about the performance of such algorithm (especially time
> performance)?
> It is feasible a use for quasi-hopefully-real-time applications?
>
> I would like to know it before investing in including it in my
> project.
>
>
> Thanks a lot.
>
> CarmeloVELARDO
>
>
> www.velardo.org
>
>
>
>
>
> On Wed, Apr 27, 2011 at 1:53 PM, Zoltan-Csaba Marton
> <[hidden email]> wrote:
>         Hi Walter,
>        
>         it is not the most straightforward way, but you can use
>         GridProjection
>         from the surface module. Using the resolution and padding size
>         parameters you can influence the density of the resulting
>         cloud and the
>         size of the holes that get filled.
>        
>         There is no tutorial for this yet, but you can take a look at
>         the
>         test_surface.cpp unit test and the presentation of Rosie here:
>         http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds
>        
>         As you will see, you will get a PolygonMesh as a result, so a
>         list of
>         points and a list of polygons that they form. You can convert
>         the points
>         back to a point cloud (please see my previous mail on the
>         list).
>        
>         There is another method as well, based on MovingLeastSquares,
>         but it is
>         unfortunately not ported to PCL yet. Hopefully soon.
>        
>         Cheers,
>         Zoltan
>        
>        
>         On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
>         > Hi all,
>         > are there any methods to fill small holes in point clouds?
>         >
>         > Thank you
>         > Walter
>         > _______________________________________________
>         > [hidden email] / http://pointclouds.org
>         > https://code.ros.org/mailman/listinfo/pcl-users
>        
>        
>         _______________________________________________
>         [hidden email] / http://pointclouds.org
>         https://code.ros.org/mailman/listinfo/pcl-users
>        
>
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users


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

Re: Point Cloud small hole filling

CARMELO VELARDO
Radu, Zoltan,

Thank you for your prompt reply.
Actually my concern was to understand how far one could go using such algorithms.
I perfectly understand both your points of view, and agree that there will be nothing like
"cudafying" all the algorithms.
Seeing the huge amount of data is the only choice.

If my plans of learning cuda goes well I'll be happy to help ;)

Thanks again.


CarmeloVELARDO

www.velardo.org




On Wed, Apr 27, 2011 at 7:20 PM, Zoltan-Csaba Marton <[hidden email]> wrote:
Hi Carmelo,

the grid projection approach might not be fast enough for you, but I am
sure it can be optimized a lot if someone puts some time in it. The good
thing there is that it produces a quasi-even distribution, unlike some
quick solutions :)

We will definitely work on alternative methods for 2.0 -- if you're
interested, feel free to help out :)

Cheers,
Zoltan

On Wed, 2011-04-27 at 17:02 +0200, CARMELO VELARDO wrote:
> Hi Zoltan.
>
>
> How about the performance of such algorithm (especially time
> performance)?
> It is feasible a use for quasi-hopefully-real-time applications?
>
> I would like to know it before investing in including it in my
> project.
>
>
> Thanks a lot.
>
> CarmeloVELARDO
>
>
> www.velardo.org
>
>
>
>
>
> On Wed, Apr 27, 2011 at 1:53 PM, Zoltan-Csaba Marton
> <[hidden email]> wrote:
>         Hi Walter,
>
>         it is not the most straightforward way, but you can use
>         GridProjection
>         from the surface module. Using the resolution and padding size
>         parameters you can influence the density of the resulting
>         cloud and the
>         size of the holes that get filled.
>
>         There is no tutorial for this yet, but you can take a look at
>         the
>         test_surface.cpp unit test and the presentation of Rosie here:
>         http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds
>
>         As you will see, you will get a PolygonMesh as a result, so a
>         list of
>         points and a list of polygons that they form. You can convert
>         the points
>         back to a point cloud (please see my previous mail on the
>         list).
>
>         There is another method as well, based on MovingLeastSquares,
>         but it is
>         unfortunately not ported to PCL yet. Hopefully soon.
>
>         Cheers,
>         Zoltan
>
>
>         On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
>         > Hi all,
>         > are there any methods to fill small holes in point clouds?
>         >
>         > Thank you
>         > Walter
>         > _______________________________________________
>         > [hidden email] / http://pointclouds.org
>         > https://code.ros.org/mailman/listinfo/pcl-users
>
>
>         _______________________________________________
>         [hidden email] / http://pointclouds.org
>         https://code.ros.org/mailman/listinfo/pcl-users
>
>
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users


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


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

Re: Point Cloud small hole filling

Mickey2Eyes
In reply to this post by Zoltan-Csaba Marton
Hi Zoltan,
I have the same problem walter has. I tried the GridProjection to get a surface with small holes filled.
I took the code from the test_surface.cpp.
When I reach the line "gp3.reconstruct(triangels);" the program crashs with
"Microsoft Visual Studio C Runtime Library has detected a fatal error in PointCloudTest.exe"
Befor crash it prints information in cmd window about size of bounding box, lower left point, upper left point, padding size and leaf size.

As I am a beginner with pcl maybe I am doing something wrong...

Thank you
Michael


Zoltan-Csaba Marton wrote
Hi Walter,

it is not the most straightforward way, but you can use GridProjection
from the surface module. Using the resolution and padding size
parameters you can influence the density of the resulting cloud and the
size of the holes that get filled.

There is no tutorial for this yet, but you can take a look at the
test_surface.cpp unit test and the presentation of Rosie here:
http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds

As you will see, you will get a PolygonMesh as a result, so a list of
points and a list of polygons that they form. You can convert the points
back to a point cloud (please see my previous mail on the list).

There is another method as well, based on MovingLeastSquares, but it is
unfortunately not ported to PCL yet. Hopefully soon.

Cheers,
Zoltan

On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
> Hi all,
> are there any methods to fill small holes in point clouds?
>
> Thank you
> Walter
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users


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

Re: Point Cloud small hole filling

Radu B. Rusu
Administrator
I did notice a similar behavior too. Can you please create an issue on the tracker (http://dev.pointclouds.org) and
we'll try to solve it before 1.0 goes out? Thanks.

Cheers,
Radu.
--
Point Cloud Library (PCL) - http://pointclouds.org

On 05/09/2011 05:55 AM, Mickey2Eyes wrote:

> Hi Zoltan,
> I have the same problem walter has. I tried the GridProjection to get a
> surface with small holes filled.
> I took the code from the test_surface.cpp.
> When I reach the line "gp3.reconstruct(triangels);" the program crashs with
> "Microsoft Visual Studio C Runtime Library has detected a fatal error in
> PointCloudTest.exe"
> Befor crash it prints information in cmd window about size of bounding box,
> lower left point, upper left point, padding size and leaf size.
>
> As I am a beginner with pcl maybe I am doing something wrong...
>
> Thank you
> Michael
>
>
>
> Zoltan-Csaba Marton wrote:
>>
>> Hi Walter,
>>
>> it is not the most straightforward way, but you can use GridProjection
>> from the surface module. Using the resolution and padding size
>> parameters you can influence the density of the resulting cloud and the
>> size of the holes that get filled.
>>
>> There is no tutorial for this yet, but you can take a look at the
>> test_surface.cpp unit test and the presentation of Rosie here:
>> http://www.willowgarage.com/blog/2011/04/13/surface-reconstruction-point-clouds
>>
>> As you will see, you will get a PolygonMesh as a result, so a list of
>> points and a list of polygons that they form. You can convert the points
>> back to a point cloud (please see my previous mail on the list).
>>
>> There is another method as well, based on MovingLeastSquares, but it is
>> unfortunately not ported to PCL yet. Hopefully soon.
>>
>> Cheers,
>> Zoltan
>>
>> On Wed, 2011-04-27 at 10:03 +0200, Walter Lucetti wrote:
>>> Hi all,
>>> are there any methods to fill small holes in point clouds?
>>>
>>> Thank you
>>> Walter
>>> _______________________________________________
>>> [hidden email] / http://pointclouds.org
>>> https://code.ros.org/mailman/listinfo/pcl-users
>>
>>
>> _______________________________________________
>> [hidden email] / http://pointclouds.org
>> https://code.ros.org/mailman/listinfo/pcl-users
>>
>
>
> --
> View this message in context: http://point-cloud-library-pcl-mailing-list.967500.n3.nabble.com/Point-Cloud-small-hole-filling-tp2869476p2918589.html
> Sent from the Point Cloud Library (PCL) mailing list mailing list archive at Nabble.com.
> _______________________________________________
> [hidden email] / http://pointclouds.org
> https://code.ros.org/mailman/listinfo/pcl-users
_______________________________________________
[hidden email] / http://pointclouds.org
https://code.ros.org/mailman/listinfo/pcl-users