Hi, Daniel
I would like to analyze the scans of some irregular walls and highlight the parts that have a radius of curvature of less than 20 cm.
The clouds are ascii files x, y, z, intensity (no normal), point spacing about 5 mm (see attached image)
I tried to use the tools in the Tools> Other> Bends> Gaussian / Mean / Normal rate change but do not know which function to use and what is the kernel value (the only data inserted by the user).
It is also possible to distinguish the concave areas from those convex?
Thanks
Alberto
.
curvature analysis
-
- Posts: 14
- Joined: Wed Jan 20, 2016 10:38 am
curvature analysis
- Attachments
-
- example.jpg (97.86 KiB) Viewed 11193 times
Re: curvature analysis
I bet the Gaussian curvature should be the most helpful (see https://en.wikipedia.org/wiki/Gaussian_curvature) but you should take the square root of the result to get something approaching (you can use the 'SF Arithmetic' tool to do this).
The mean curvature (https://en.wikipedia.org/wiki/Mean_curvature) is more directly equivalent to a radius of curvature, but it's also less robust.
The kernel radius is the size of the neighborhood that is extracted around each point in order to estimate the curvature. The bigger it is, the less sensitive to noise the measure will be (but it will also be smoother). And if it's too small then there won't be enough points to compte the curvature (and you have to be sure that the data is noiseless).
Setting it correctly depends on both the density of your cloud and on the range of curvatures you are interested in. I bet you could set at least 5 cm here?
And last but not least, the curvature measures are all unsigned. Therefore you can't differentiate the convex and concave areas...
The mean curvature (https://en.wikipedia.org/wiki/Mean_curvature) is more directly equivalent to a radius of curvature, but it's also less robust.
The kernel radius is the size of the neighborhood that is extracted around each point in order to estimate the curvature. The bigger it is, the less sensitive to noise the measure will be (but it will also be smoother). And if it's too small then there won't be enough points to compte the curvature (and you have to be sure that the data is noiseless).
Setting it correctly depends on both the density of your cloud and on the range of curvatures you are interested in. I bet you could set at least 5 cm here?
And last but not least, the curvature measures are all unsigned. Therefore you can't differentiate the convex and concave areas...
Daniel, CloudCompare admin
-
- Posts: 14
- Joined: Wed Jan 20, 2016 10:38 am
Re: curvature analysis
Hello
I tried both methods gaussian sqr and mean with similar results and some problems: they do not work well near the corners and i think they are very sensitive to the noise of the scanner providing curvature values of areas that should be flat and smooth; for this i thought of an alternative method:
I have created a matrix of points around the cloud to be analyzed, selected the points at 20 cm from the latter and divided into external and Internal with the cutting tool, then i calculated the distance of the cloud of relief from internal and external clouds and ighlighted the points more distant than 20 cm.
Is a very slow process, i hope that you can automate it creating for example an offset tool for the clouds.
regards
Alberto
.
I tried both methods gaussian sqr and mean with similar results and some problems: they do not work well near the corners and i think they are very sensitive to the noise of the scanner providing curvature values of areas that should be flat and smooth; for this i thought of an alternative method:
I have created a matrix of points around the cloud to be analyzed, selected the points at 20 cm from the latter and divided into external and Internal with the cutting tool, then i calculated the distance of the cloud of relief from internal and external clouds and ighlighted the points more distant than 20 cm.
Is a very slow process, i hope that you can automate it creating for example an offset tool for the clouds.
regards
Alberto
.
- Attachments
-
- example_1.jpg (155.9 KiB) Viewed 11175 times
-
- example_2.jpg (181.2 KiB) Viewed 11175 times
Re: curvature analysis
Interesting.
You say that the curvature computation methods are very sensitive to noise. That's true but especially for small kernels. Have you tried big ones? What is the maximum you tried?
Otherwise they are made for smooth surfaces, therefore corners are indeed badly taken into account.
You say that the curvature computation methods are very sensitive to noise. That's true but especially for small kernels. Have you tried big ones? What is the maximum you tried?
Otherwise they are made for smooth surfaces, therefore corners are indeed badly taken into account.
Daniel, CloudCompare admin
-
- Posts: 14
- Joined: Wed Jan 20, 2016 10:38 am
Re: curvature analysis
I tried with 10 cm on a section with very smooth walls and the result seem strange (i could be wrong), i attach the WeTransfer link to the cloud if you want to play with it:
https://www.wetransfer.com/downloads/f1 ... 934/443441
regards
Alberto
.
https://www.wetransfer.com/downloads/f1 ... 934/443441
regards
Alberto
.
- Attachments
-
- smooth_gallery.jpg (138.21 KiB) Viewed 11160 times
Re: curvature analysis
are there any rules or guides for setting the kernel size?
Re: curvature analysis
Well it's hard to tell ;)
This 'kernel' is in fact the radius of a sphere inside which the neighbors are extracted (around each point). With the point and its neighbor, we then compute the quadric that best fit them and we deduce the curvature values for the central point directly from this quadric formula.
Therefore the result is perfect if the quadric fits the points perfectly. But a quadric is a smooth surface. Therefore it doesn't work on sharp edges and corners. And if there's too much noise and outliers you'll definitely get strange results.
If you set a small radius, then the noise will have a big effect on the result. But if you use a too high radius, the quadric might not properly fit to the cloud geometry.
To properly compute the curvature on complex shapes one would need to make a very clean reconstruction of the surface (at least locally). In fact you basically need a clean mesh!
This 'kernel' is in fact the radius of a sphere inside which the neighbors are extracted (around each point). With the point and its neighbor, we then compute the quadric that best fit them and we deduce the curvature values for the central point directly from this quadric formula.
Therefore the result is perfect if the quadric fits the points perfectly. But a quadric is a smooth surface. Therefore it doesn't work on sharp edges and corners. And if there's too much noise and outliers you'll definitely get strange results.
If you set a small radius, then the noise will have a big effect on the result. But if you use a too high radius, the quadric might not properly fit to the cloud geometry.
To properly compute the curvature on complex shapes one would need to make a very clean reconstruction of the surface (at least locally). In fact you basically need a clean mesh!
Daniel, CloudCompare admin
Re: curvature analysis
Thanks for your thorough answer.
I am just wondering if there is kind of a rule of thumb; like for instance the ratio of wavelength and resolution - a quater of the wavelength equals the resolution.
So if I want to visualise objects in my point cloud that have a certain extent, how do I set the the associated kernel?
Thanks for these interesting and multidisciplinary discussions!
I am just wondering if there is kind of a rule of thumb; like for instance the ratio of wavelength and resolution - a quater of the wavelength equals the resolution.
So if I want to visualise objects in my point cloud that have a certain extent, how do I set the the associated kernel?
Thanks for these interesting and multidisciplinary discussions!
-
- Posts: 14
- Joined: Wed Jan 20, 2016 10:38 am
Re: curvature analysis
I would like to have a confirmation: the mean curvature method applied to a cloud imported in meters, returns values (radiuses) also in meters?
Alberto
Alberto
Re: curvature analysis
In fact the mean curvature (and the others I guess) is expressed in inverted units (cloud in m. --> curvature in m^-1 = 1/m).
If you have a sphere of radius 2, the mean curvature will be 1/2 = 0.5. If you have a sphere of radius 20, you'll have a mean curvature of 1/20 = 0.05.
If you have a sphere of radius 2, the mean curvature will be 1/2 = 0.5. If you have a sphere of radius 20, you'll have a mean curvature of 1/20 = 0.05.
Daniel, CloudCompare admin