MATLAB Answers

Miscalculation of new function "pcsegdist" in Matlab R2018b

4 views (last 30 days)
ha ha
ha ha on 2 Mar 2019
Commented: ha ha on 9 Jul 2020
I try to test the new function "pcsegdist" in Matlab R2018b. However, the result is wrong for Segment point cloud into clusters based on Euclidean distance
Example: I test with 3D data points- 1797 points (please see attached test.txt file). It is noted that the smallest distance between 2 neighbor points is 0.3736
clear;clc;filename = 'test.txt'; load('test.txt');P = test(:,1:3);%get data=coordinate(x,y,z) from set of data "column" at (all row & column 1,2,3)
ptCloud = pointCloud(P);
minDistance = 0.71;%this value should less than the smallest 3D distance between 2 clusters
[labels,numClusters] = pcsegdist(ptCloud,minDistance);%numClusters: the number of Cluster
%labels: is the kx1 matrix. This is index of each voxel in each cluster
%% Generate the cell_cluster
for i=1:numClusters
cluster_i=[x(labels==i),y(labels==i),z(labels==i)];%call x,y,z coord of all points which is belong the same cluster
cell_cluster{end+1} = cluster_i;%this is (1xk)cell. where k=number of cluster
figure;Plot_cell(cell_cluster);view(3);% plot result cluster(using function to plot)
But when I verify by using manually method (ground truth data), the result should as below figure:
Thus, I wonder about the result of new function "pcsegdist" in Matlab R2018b, Or I misunderstand or I wrong somewhere ?


Jack Hayton
Jack Hayton on 18 Apr 2019
I am also interested in the answer to this, pehaps someone who has a better understanding of the function can explain how exactly it works in more detail? The comments do not explain enough...
Image Analyst
Image Analyst on 9 Jul 2020
What is the y distance between the upper blue "6" dot, and the lower brown "5" dot? If it's more than 0.71 then it's reasonable for the function to call the blue and brown as separate classes.
ha ha
ha ha on 9 Jul 2020
As I described in my question: "the smallest 3D distance between 2 neighbor points is 0.3736". Thus, with parameter setting "minDistance = 0.71", this should be 1 cluster (not 2 clusters as the result of new function "pcsegdist" in Matlab R2018b)

Sign in to comment.

Answers (0)





Community Treasure Hunt

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

Start Hunting!