Updated 16 Oct 2018
%% 3D holes detection algorithm
% This work extend the 2D holes detection strategy proposed by Gypaets
% (2016.6.18) to 3D situation. Here, we propose the conectivity length of a
% local manifold to replace the area of polygon to detect the irragular
% triangular mesh patches which should be the holes. It achieves pretty good
% performance in finding holes in 3D situation.
% Example of the conectivity length of a local manifold (p1p2p3p4):
% p1 ----- p2
% \ / \
% \ / \
% \ / \
% p3 ------- p4
% The connectivity length of above manifold is calculated as follows,
% Conlen(p3) = length(p1-p3) + length(p1-p2) + length(p2-p3) + length(p2-p4)
% + length(p3-p4).
% Author: Chong WU, Department of Electroic Engineering,
% City University of Hong Kong, Hong Kong SAR, China.
% Released Date: 2018.10.16
% Inspired by the work of Gypaets, 2016.6.18, and URL is
% If you have found any bugs, have any suggestions or problems, please contact me at
% Email: firstname.lastname@example.org
% Input: p is a N-by-3 point clouds data, L is a thredshold (its value
% usually takes 2 to 3), and t is a raw triangular mesh of p which needs to detect
% and remove the holes.
% Output: t is a new triangular mesh after holes detection and elimination.
Chong WU (2020). HoleDetection3D (https://github.com/Alicewithrabbit/HoleDetection3D), GitHub. Retrieved .
rowcount = 200000;
X = rand(rowcount,1)*10;
Y = rand(rowcount,1)*10;
tmp =[X Y];
mytmp = pdist2(tmp,mean(tmp));
index = mytmp>2;
X = tmp(:,1);
Y = tmp(:,2);
Z = ones(size(X,1),1);
P = [X Y Z];
T = delaunay(P);
newt = HoleDetection3D(P ,2 ,T)
Helloe ， When I run the above code，occur error, I want to find the circle's boundary in the point clouds P ,How do I solve this problem?
Inspired by: Gypaets/findTheHoles