3D plotted shape is not following curvature of data points

조회 수: 3 (최근 30일)
Sumeet Chaudhari
Sumeet Chaudhari 2020년 7월 6일
편집: John D'Errico 2020년 7월 6일
I am writing a code that creates a 3D shape from a set of data points and am running into this problem where the shape does not properly follow the curvature of the data points and rather draws a straight line. This can be seen on the sides of the figure below where the shape isn't properly following the data points into the curves.
My code:
load('seg_info.mat');
x = seg_info(:, 1);
y = seg_info(:, 2);
z = seg_info(:, 3);
colors = seg_info(:, 4);
scatter3(x,y,z);
hold on;
DT = delaunayTriangulation(x, y, z);
[K, v] = convexHull(DT);
trisurf(K, DT.Points(:,1), DT.Points(:,2), DT.Points(:,3), ...
'FaceAlpha', 0.5, 'EdgeColor', 'none', ...
'CData', colors, 'FaceColor', 'interp');
Does anyone know how I can improve my code to better fit these sides? I have tried using alpha shapes and boundary in an attempt to derive the concave hull but neither worked.
  댓글 수: 5
John D'Errico
John D'Errico 2020년 7월 6일
You think the problem is in the triangulation? A delaunay triangulation trinagulates the entire region within the convex hull of the data. In fact, you even used a convex hull there. So surely you would expect that the result will be a convex region. If you don't want it to be convex, then you can't use a convex hull. Or for that matter, a Delaunay triangulation.
Sumeet Chaudhari
Sumeet Chaudhari 2020년 7월 6일
I have been trying to use mesh and even searching File Exchange for a program that calculates a concave hull. Looking at a scatter3 plot, I wish there was a way to just connect all the dots since the input data already represents the outer surface of the shape.

댓글을 달려면 로그인하십시오.

채택된 답변

jonas
jonas 2020년 7월 6일
  댓글 수: 2
Sumeet Chaudhari
Sumeet Chaudhari 2020년 7월 6일
thank you so much for the help! really appreciate it
John D'Errico
John D'Errico 2020년 7월 6일
편집: John D'Errico 2020년 7월 6일
Assuming that is a CRUST implementation, it is probably the best choice. And a quick glance at the code suggests it is indeed CRUST.
An alternative code can be found here:

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Bounding Regions에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by