Cross Section of PointCloud

23 views (last 30 days)
Justin Park
Justin Park on 7 Jul 2017
Commented: Steven Amor on 21 May 2020
Hello everyone,
I have a 3D point cloud, and I want to find the cross section of it by slicing it with a plane that is defined by a point and a perpendicular vector. Then I wish to detect and store the points close to the plane on either side. Any ideas on how to do this? Thanks in advance.
  4 Comments
Sallymarc
Sallymarc on 19 Jul 2017
Edited: Sallymarc on 19 Jul 2017
Hi, I have a problem, having 3D points and I need to see the cross section of that by slicing that. But I need to know one step back. I do not know even how to define a plane, based on points and the normal to the plane. Also, I do not know how to define a threshold for a plane. Any one can explain this in more detail or willing to share the example code here? Thanks
Steven Amor
Steven Amor on 21 May 2020
We have been playing around with our Euclideon Vault SDK inside Matlab as a way to view massive 3D Point Clouds - similar to what we've previously done for the Unity platform.
(The full SDK includes the ability to do cross sections)
My question to this forum is whether anyone has a need for such a thing, and if so what specific features would you want?
We can render our Unlimited Detail models inside Matlab using CPU only, rotate the model but what else?
- specify camera position?
- would you want geospatial support? what geo-zones? local grid?
- select a point to see meta-data?
- select and area?
- export an area to Point Cloud / LAS?
- Anything else?
I assume currently people are using Matlab for Point Cloud processing, transformation, classification, ML, etc. and exporting the data into other packages for viewing. Would it be useful to view the point cloud instantly inside Matlab?
Steve
samor@euclideon.com
[url]http://www.euclideon.com/vault[/url]

Sign in to comment.

Accepted Answer

John D'Errico
John D'Errico on 7 Jul 2017
Edited: John D'Errico on 7 Jul 2017
Ok. Given a tolerance in the form of a distance, then just compute the distance to the plane!
Retain any points that lie within the tolerance.
Personally, I'd probably color code the points as plotted, based on how far they lie off the plane, but within the tolerance.
If you know how to define a plane, based on a point and the normal to the plane, then the distance is given by a simple dot product. So if pointInPlane is the point, and normalToPlane is the normal vector (assume it is of unit length)
D = dot(P-pointInPlane,normalToPlane);
If you do this carefully, the above computation is vectorized. Even simpler, you can do it as a simple matrix multiply, without even needing the function dot. After all, a matrix*vector multiply is just a dot product anyway. Use find to choose the points that are closer than the indicated tolerance. Then I'd just use a tool like scatter to plot the points with my chosen color mapping.
  1 Comment
Justin Park
Justin Park on 7 Jul 2017
Great! I'll definitely give it a go. Thanks John!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!