Matlab 用Delaunay三角剖分在点云中寻找异常点

Matlab 用Delaunay三角剖分在点云中寻找异常点,matlab,outliers,delaunay,Matlab,Outliers,Delaunay,我有代表激光雷达测量的3D点云,我想移除或插值异常值 MWE创建了一个带有一些异常值的平滑曲面。然而,实际测量可以被认为是分段平滑的,因为点云表示环境的“外壳”。因此,在x和y方向进行简单的平滑操作不会产生好的结果 MWE rng(42); [X, Y] = meshgrid(linspace(-1, 1, 31), linspace(-1, 1, 31)); Z = peaks(X,Y); T = delaunay(X,Y); % create noisy samples noise_i

我有代表激光雷达测量的3D点云,我想移除或插值异常值

MWE创建了一个带有一些异常值的平滑曲面。然而,实际测量可以被认为是分段平滑的,因为点云表示环境的“外壳”。因此,在x和y方向进行简单的平滑操作不会产生好的结果

MWE

rng(42);
[X, Y] = meshgrid(linspace(-1, 1, 31), linspace(-1, 1, 31));

Z = peaks(X,Y);

T = delaunay(X,Y);

% create noisy samples
noise_idx = randi(numel(Z_noisy), 20, 1);
Z_noisy = Z;
Z_noisy(noise_idx) = Z_noisy(noise_idx)+3*sign(rand(size(noise_idx))-0.5);

% visualization
trisurf(T,X,Y,Z_noisy, 'FaceColor', 'interp');
view([0 90]);
我有三个独立的问题,回答其中任何一个都会非常有帮助

  • 如何估计异常值的指数?(
    noise_idx
    在MWE中)
  • 如果已知异常值的索引,我是否可以更改
    trisurf
    参数,以便不绘制异常值?我希望避免创建另一个Delaunay三角剖分
  • 如果已知异常值的指数,如何获取连接点的指数,以插值与异常值对应的Z值,而不是删除异常值
  • 可视化