Why do I get holes in my AlphaShape in MATLAB, even though the point spacing is smaller than the alpha value?

2 次查看(过去 30 天)
I have a set of 3D points and want to reconstruct the shape of a car using AlphaShape. The problem I'm encountering is that I still get holes, even though the distance between the points is smaller than the alpha value. I have already tried adjusting the HoleThreshold with different values, but it has no effect on the result. I have included the code I am using and a picture (zoomed in on the door) showing the type of holes I am referring to.
%% Downsampling
gridstep = 0.008;
ptCloudDownSampled = pcdownsample(ptCloud,"gridAverage",gridstep);
pcshow(ptCloudDownSampled)
x = double(ptCloudDownSampled.Location(:,1));
y = double(ptCloudDownSampled.Location(:,2));
z = double(ptCloudDownSampled.Location(:,3));
%% AlphaShape
shp = alphaShape(x, y, z, 0.13);
  4 个评论
John D'Errico
John D'Errico 2024-9-17
The data might be of value. In fact, it will be terribly difficult to know for sure what happened otherwise. But my guess is it is a large data set, and that might make it problematic to upload the data.
I might make a random conjecture, but any guess will be certainly wrong, based on nothing more than a picture.
Lars Urban
Lars Urban 2024-9-19
@Matt J I attached the data i use here now.
@Walter Roberson See below my Code I use for plotting. But i am exporting the results as a stl file and i can see the holes in other softwares too. Like CloudCompare or Autodesk Fusion.
@John D'Errico Yes the data is large and i would say realitve noisy. But i could not find anything about problems reconstructing a noisy pointcloud with alphashape.
%% Plot
figure;
plot(shp, 'FaceColor', [0.2 0.6 0.8], 'EdgeColor', 'none');
hold on;
ax = gca;
ax.FontSize = 14;
ax.FontWeight = 'bold';
ax.XColor = 'k';
ax.YColor = 'k';
ax.ZColor = 'k';
%
title('AlphaShape 3D', 'FontSize', 16, 'FontWeight', 'bold');
xlabel('X-Achse', 'FontSize', 14, 'FontWeight', 'bold');
ylabel('Y-Achse', 'FontSize', 14, 'FontWeight', 'bold');
zlabel('Z-Achse', 'FontSize', 14, 'FontWeight', 'bold');
%
axis equal;
az = -90;
el = 0;
camlight(az,el);
set(gcf, 'Color', 'w');
view(az, el);
grid off;
hold off;

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Bounding Regions 的更多信息

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by