Processing math: 100%

1. Creating a point cloud

Loading point cloud from a .txt file

Generating a point cloud

2. Kernel definitions

We define several kernel profiles. The standard kernel, of derivative standardPrime, corresponds to ρ(t)=exp(11t2)etρ(t)=2t(1t2)2exp(11t2).

To each kernel ρ, we associate its kernelPair ξ satisfying nξ(t)=tρ(t). For instance, the standardPair kernel is ξ(t)=2nt2(1t2)2exp(11t2).

3. Mass computation

The method computeMassKnn attributes relative weights mi for i=1N in order to rectify potential bias in the sampling: masses should be small in areas where points are concentrated.

More precisely, we assume that the given set of points {xi}i is close to some surface (and more generally d-submanifold or d-rectifiable set) and we want to define masses mi for i=1N so that the Radon measures μN=Ni=1miδxi and Hd|M are close, where Hd denotes the d-dimensional Hausdorff measure in Rn. Let ηr be a compactly supported radial kernel, i.e. given η:RR+ even and compactly supported in [1,1], define for r>0 and xRn, ηr(x):=η(|x|/r). A natural choice is then to consider

mi=CηrdNj=1η(|xixj|r)=Hd|TxiMηr(xi)μNηr(xi)r0Hd|Mηr(xi)μNηr(xi)

where Cη>0 is the integral over any d-vector subspace PRn of xη(|x|) (since η is radial): Cη=Pη(|x|)dHd(x)=dωd10η(r)rd1drandωd is the Lebesgue measure of the unit ball of Rd. Constant Cη can however be dropped when computing relative weights of points since it is uniform in the whole point cloud.

We can either choose the number kM of neighbours and infer the radius r>0 of the neighbouring ball to be considered (Knn) or choose the radius r>0 of the neighbouring ball (not implemented yet) and infer kM.

Up to now, we implemented the following expression: mi=rdkM corresponding to η=χ[1,1] and thus Cη=ωd has been dropped in the implementation (for d=2, ωd=π for instance).

Example of mass visualisation

4. Regression

The method regressionKnn and regressionRadius perform a local covariance analysis, weighted with kernel, hereafter denoted by ω, so as to define the tangent at each point of the point cloud varifold. We can either choose the number kT of neighbours and infer the radius r>0 of the neighbouring ball to be considered (Knn) or choose the radius r> of the neighbouring ball (Radius) and infer kT. Given a point xi0 in the cloud, we compute the matrix 1kTNj=1mjω(|xjxi0|r)(xjxi0)T(xjxi0)n×n rank 1 matrix. While the sum is over the whole set of points, the kernel has support r>0 and the sum is over kT terms. Depending on the option massWeights, mj is the local mass stored in the attribute mass or all mj are set to 1.

5. Computation of second fundamental form

Example of gaussian and mean curvature visualisation