% ptCloud = pointCloud(1000*rand(100,3,'single'));
%'double';
pointdata=importdata('C:\myfiles\xyz\mdq_face_1.xyz'); %载入点云数据
ptCloud = pointCloud(pointdata);
% figure;
% pcshow(ptCloud); %显示点云数据
[pointdata_rows,pointdata_list] = size(pointdata);
max_dists = 1.5; %设置阈值,这个值需要自行调整
final_face = [];
for ii = 1:pointdata_rows
point = pointdata(ii,:);
k = 8;
[indices,dists] = findNearestNeighbors(ptCloud,point,k);
mean_dists = mean(dists); %求均值
ss = std(dists,0,1); %求标准差
dt = mean_dists+(0.6*ss); %定义距离
indices_list = [];
if dt < max_dists
final_face = [final_face;point];
end
end
figure;
pcshow(final_face); %显示降噪后的点云图
%后面的是把降噪后的点云重输出到文件
% output_file = 'C:\myfiles\xyz\mdq_face_2.xyz';
% fid = fopen(output_file,'a');
%[face_row_e,face_list_e] = size(final_face);
% for i = 1:face_row_e
% for j = 1:face_list_e
% fprintf(fid,'%f\t',final_face(i,j));
% end
% fprintf(fid,'\r\n');
% end
% fclose(fid);