matlab处理三维点云


功能描述

使用matlab读取三维点云,并获取其中点的空间坐标,并截取某个平面

clear;clc;
format long;
j = 0;k = 0;n = 0;
sign = 0;temp = 0;
T = zeros(1,1);
A = pcread('teapot.ply');
figure(1);
pcshow(A);
pause(1);
B = A.Location;
m = length(B);
for i = 1:m
    s = 0;t = i;
    for j = 1:m
        if B(i,3) == B(j,3)
            s = s + 1;
        end
    end
    if s >= sign
        k = k + 1;
        T(k,1) = t;
        sign = s;
        temp = t;
    end
end
c = randperm(k,1);
z = T(c,1);
flag = B(z,3);
C=zeros(sign,2);
for i = 1:m
    if B(i,3) == flag
        n = n + 1;
        C(n,1) = B(i,1);
        C(n,2) = B(i,2);
    end
end
avg = mean(C);
figure(2);
scatter(C(:,1),C(:,2),'c.');
pause(1);
fprintf('在第%d行,第3列取定Z值\n\n',z);
fprintf('与之在同一平面的有%d个点\n\n',sign);
fprintf('在该行所取的Z值为:\n');
disp(flag);
fprintf('平面的平均坐标值为:\n')
disp(avg);