Fitting a cilinder to 3D vertices

조회 수: 6 (최근 30일)
Alonso Figueroa
Alonso Figueroa 2018년 5월 29일
댓글: Walter Roberson 2020년 5월 31일
I am having problems fitting a cylinder to a point cloud. Trying to use "pcfitcylinder", an error saying 'the value of 'ptCloud' is invalid. Expected ptCloud to be a pointCloud object' while the pointcloud is a nx3 created from the vertices of an .stl file. The code is:
Bone_model=stlread(fullfile(Bone_path,Bone_file));
maxDistance=.5
cilinder = pcfitcylinder(Bone_model.vertices,maxDistance);
pcshow (Bone_model.vertices);hold on;
plot(cilinder)
Is there anything i'm doing wrong?
  댓글 수: 1
KSSV
KSSV 2018년 5월 30일
It is expecting a different input.....read the documentation.

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

채택된 답변

Walter Roberson
Walter Roberson 2018년 5월 30일
stlread() appears to be one of the functions from the File Exchange, probably https://www.mathworks.com/matlabcentral/fileexchange/22409-stl-file-reader
The vertices returned by that stlread() function are configured for use by patch(). pcfitcylinder() requires that a pointcloud object be passed in.
You might be able to use
pc = pointcloud(Bone_model.vertices);
[cilinder,inlierIndices] = pcfitcylinder(pc, maxDistance);
cylpc = select(cilinder, inlierIndices);
pcshow(cylpc)
Note that pcfitcylinder attempts to find a subset of the pointcloud that is in the form of an cylinder.
  댓글 수: 7
M.S. Khan
M.S. Khan 2020년 5월 31일
Hi Danny,
could you please explain the coding to me. i also want to apply it on my problem.
Warm regards,
Walter Roberson
Walter Roberson 2020년 5월 31일
M.S. Khan, which coding are you referring to? The only line of code that Daniel posted was
TalusPtCloud = pointCloud(Talus.solidVertices{1,1}, 'Normal', Talus.solidNormals{1,1});

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Point Cloud Processing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by