BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

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

BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
Hello everyone:

I have a problem for the class pcl::NormalEstimation.

When I load my point cloud and compute the norm and curvature, I get the value. However, when I just shift (even no rotation), the original cloud and compute its norm and curvature again, the result completely changed and I believe the result should NOT be changed at all because the geometry property is unchanged.

I get the same problem when I compute the norm point by point, is this a BUG in PCL???

Regards
Jun
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

VictorLamoine
Administrator
Hello,

I believe you are referring to this issue:
https://github.com/PointCloudLibrary/pcl/issues/560

Bye
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
Hello,

I used your test code but it still doesn't work, what does cloud_centered_normals mean? As far as I see from the result, it is even getting worse.

Regards
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

VictorLamoine
Administrator
The test code does not aim to solve the problem, only to demonstrate it.
The issue is still open/un-resovled, though gcasey seems to have a solution:
https://github.com/PointCloudLibrary/pcl/issues/560#issuecomment-152199082
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Casey Goodlett
My fix uses two pass calculation of mean and covariance which makes the covariance estimation more robust.  The current version can get negative eigenvalues in the estimate when the point cloud is far from the origin.  Negative eigenvalues in covariance should not be possible.  The eigenvector/eigenvalue calculation can not deal with these non-feasible negative eigenvalues.  It looks like my patch is failing travis checks.  I'll try to get it updated to master in the next couple of days.  Any help on the PR would be welcome.

Thanks

--
Casey Goodlett

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

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
Hello Casey:

Thanks for your explanation, and I am also thinking if the normal estimation has this covariance issue, how do people do registration on point cloud? Because as far as I know, almost all the features needs normal as input.

Best Regards
Jun Yang
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Casey Goodlett
The only PCL registration algorithm I am familiar with is the normal distributions transform registration.  It has a separate function for covariance estimate and does not suffer from this issue.

Hope that helps.

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

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
Thanks!
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
In reply to this post by VictorLamoine
Hello:

Based on what you said, is the obtained normal by normalEstimation reliable to use for the further feature extraction and registration?

If not, what is the meaning of this class?

Regards
Jun
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

andersgb1
Jun,

The normal orientation errors only occur in rare instances where an overflow occurs in the computations, so you can generally use it safely. I have been using it for years on several different data sets without ever encountering these instabilities. So, if you are eager to have the bug-free version, grab a copy of Casey's code for the fix and use that!

Normals are a requirement for almost all features in PCL, including (F)PFH, SHOT, PPF, Spin images, etc.

On Thu, Oct 29, 2015 at 9:24 PM, Transpose <[hidden email]> wrote:
Hello:

Based on what you said, is the obtained normal by normalEstimation reliable
to use for the further feature extraction and registration?

If not, what is the meaning of this class?

Regards
Jun



--
View this message in context: http://www.pcl-users.org/BUG-REPORT-in-NormalEstimation-tp4039849p4039866.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: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

nenadpol
This post was updated on .
Hi,

A little bit more communication between users and PCL developers would help everybody.
Users should spend more time reading PCL documentation and be more precise when writing messages and developers should answer.

I understand that it is impossible to look and check every message but sometimes it goes days without any response from PCL developers and administrator.

Sad thing is that this is only getting worse not better.

When somebody reports bug it would be nice to know if bug is real or not.

cheers
Nenad
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
In reply to this post by andersgb1
Hello:

Thanks for your explanation. And how do you use the normalEstimation class in real application? Do you just calculate it or do some preprocessing (like centering the cloud)?

Because I was thinking the normal is calculated from the eigen vector corresponding to the smallest eigenvalue, and even we shift the cloud, the neighbors of a point still the same, which means the covariance matrix and eigen vector is unchanged. I still don't understand where the inacuracy from because calculating the corMatrix and eigen vector is not that complicated in other tools (e.g. Matlab).

Thanks again!
Jun
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
In reply to this post by nenadpol
Thanks!
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

andersgb1
In reply to this post by Transpose
One source of inaccuracy is when the absolute point coordinates are large - then the sums in the computation of the covariance matrix become huge, and this can cause problems. Of course, using double precision would help, but it also slows down the algorithm.

Anyway, I just use it as is based on the example code (http://pointclouds.org/documentation/tutorials/normal_estimation.php), I don't center my clouds or anything. 

On Fri, Oct 30, 2015 at 2:31 PM, Transpose <[hidden email]> wrote:
Hello:

Thanks for your explanation. And how do you use the normalEstimation class
in real application? Do you just calculate it or do some preprocessing (like
centering the cloud)?

Because I was thinking the normal is calculated from the eigen vector
corresponding to the smallest eigenvalue, and even we shift the cloud, the
neighbors of a point still the same, which means the covariance matrix and
eigen vector is unchanged. I still don't understand where the inacuracy from
because calculating the corMatrix and eigen vector is not that complicated
in other tools (e.g. Matlab).

Thanks again!
Jun




--
View this message in context: http://www.pcl-users.org/BUG-REPORT-in-NormalEstimation-tp4039849p4039879.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: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

Transpose
Do we have the double precision version of NormalEstimation or the current version is good enough?

Thanks
Reply | Threaded
Open this post in threaded view
|

Re: BUG REPORT in NormalEstimation!!!!!!!!!!!!!!!!

andersgb1
No, we don't. The current version is good enough in my opinion, especially with the proposed fix

On Fri, Oct 30, 2015 at 3:13 PM, Transpose <[hidden email]> wrote:
Do we have the double precision version of NormalEstimation or the current
version is good enough?

Thanks



--
View this message in context: http://www.pcl-users.org/BUG-REPORT-in-NormalEstimation-tp4039849p4039885.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