公司网站手工优化怎么做,易优cms插件,做化妆招生宣传在那些网站可以做,长沙做网站推广公司咨询1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点#xff0c;可快速准确提取边界点。如下图所示#xff0c;对于任意形状的平面点云#xff0c;若一个半径为a的圆#xff0c;绕其进行滚动…1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点可快速准确提取边界点。如下图所示对于任意形状的平面点云若一个半径为a的圆绕其进行滚动其滚动的轨迹形成的点为轮廓点。需要注意的是alpha shapes算法只能探测二维点的轮廓点。因此在提取点云轮廓点直线需要将点投影在二维平面上一般是XOY平面此时将所有点的z坐标均设置成相同的常数即可如z0。 2、测试结果 基于MATLAB的alpha shapes的边缘点提取主要包括原始点云可视化、提取边缘点可视化、原始点云与提取边缘点可视化、滚动圆可视化4块部分。 代码下载链接https://download.csdn.net/download/qq_32867925/89252183 在测试数据时只需要将load中加载数据进行修改即可。使用是将matlab软件当前路径设置为alphashapedetectbounpts.m文件所在路径。 部分代码展示 使用kdtree搜索近邻点
[idx,D]rangesearch(data,data,2*r);%使用kdtree搜索近邻点
判断一个点是否为边缘点 for k1:knn-1%少可一个点 for4x3currentKNN(k,1);y3currentKNN(k,2);d1sqrt((x3-x2)*(x3-x2)(y3-y2)*(y3-y2));d2sqrt((x3-x21)*(x3-x21)(y3-y21)*(y3-y21)); if (d1r)countcount1;elseif(d2r)count01count011;endend if (countknn-1)bounpts[bounpts;data(i,1),data(i,2)];circle_XY[circle_XY;x2,y2];break;elseif (count01knn-1)bounpts[bounpts;data(i,1),data(i,2)]; circle_XY[circle_XY;x21,y21];break;%终止for3 2.1无孔洞点云 如下图为无孔洞点云alpha shapes提取的边缘点符合真实情况将边缘点构成的圆进行可视化可以发现滚动圆均位于外侧表明该算法提取的边缘点类似一个滚动圆滚动点云而得到。
原始点云边缘点提取结果原始点与边缘点滚动圆与边缘点
2.2有孔洞点云 如下图为无孔洞点云alpha shapes提取的边缘点符合真实情况将边缘点构成的圆进行可视化可以发现滚动圆均位于外侧表明该算法提取的边缘点类似一个滚动圆滚动点云而得到。同时位于内部的边缘点也被准确提取出效果理想。
原始点云边缘点提取结果原始点与边缘点滚动圆与边缘点
3、总结 基于alpha shapes提取边缘时该方法只能提取位于一个平面上的点云数据的边缘且只与滚动圆半径相关提取效果一般比较理想。
基于matlab的源码下载链接https://download.csdn.net/download/qq_32867925/89252183