Is there a better alternative to the convexhull function to produce 3D triangulation?

I have scanned a cube of known dimensions using Microsoft Kinect. I need to calculate the volume of the cube and compare it against the theoretical volume to determine accuracy. I have used convexhull to calculate the triangles and a function called faceNormal by David Legland to calculate normals. However, I notice that the mesh generated does not reflect the real shape because some faces of the cube are really not flat. If I use other software such as Geomagic the same point cloud looks much better after mesh generation. I have calculated the volume of the cube: 1. Reconstructed with Matlab = 0.936 litres 2. Reconstructed with Geomagic = 0.783 litres 3. Theoretical volume = 0.696 litres
In average the volume reconstructed with Matlab is 34% higher that the theoretical volume which is not great. I would like to know other alternatives to the convexhull function to calculate 3D triangulation.

Answers (2)

CONVHULL or CONVHULLN will calculate the volume directly from the input vertices, and return it as the 2nd output argument.

3 Comments

Many thanksd for your answer. Based on your suggestion, I used CONVHULLN but the volume I get is still a 37% higher than the theoretical volume. As the object I scanned is not convex, is there any other function to calculate triagulation for non convex shapes?
In your original post, you said you were scanning a cube (which would be convex). What is the shape then?
You can apply CONVHULLN to the Delaunay triangulation of a nonconvex shape
DT=DelaunayTri(V); %The rows of V are the vertices
T=DT.Triangulation;
N=size(T,1);
vols=zeros(1,N);
for ii=1:N
[~,vols(ii)]=convhulln(V(T(ii,:),:));
end
volume = sum(vols),

Sign in to comment.

Categories

Asked:

on 22 Mar 2013

Community Treasure Hunt

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

Start Hunting!