Existe-t-il un équivalent de pcnormals
de MATLAB dans Julia?Estimer des normales pour le nuage de points dans Julia
Je voudrais également savoir s'il y a un moyen de read et write.ply
fichiers dans Julia?
Existe-t-il un équivalent de pcnormals
de MATLAB dans Julia?Estimer des normales pour le nuage de points dans Julia
Je voudrais également savoir s'il y a un moyen de read et write.ply
fichiers dans Julia?
De la description de pcnormals
est ici une tentative de recréer à l'aide de Julia à l'aide des paquets Distances et KNN:
using Distances
using kNN
function pcnormals(pcloud::Matrix,k::Int = 6)
n,d = size(pcloud)
S = pairwise(Euclidean(),pcloud')
NN = hcat([kNN.k_nearest_neighbors(k,i,S) for i=1:n]...)'
normals = hcat([normalize(pcloud[[i;NN[i,:]],:]\ones(k+1)) for i=1:n]...)'
return normals
end
N = 1000
D = 3
X = mapslices(normalize,randn(N,D),2)
normals = pcnormals(X)
println("mean inner product = $(mean(X[1:10,:]*normals[1:10,:]'))")
diag(X[1:10,:]*normals[1:10,:]')
Le code après la définition est un mini-test qui tente de regarder points sur la sphère unité et voir si la normale d'un point est proche de lui-même (en utilisant le produit interne comme mesure de similarité). Les résultats avaient l'air convaincant:
mean inner product = 0.18584539662300542
10-element Array{Float64,1}:
0.990708
0.999839
0.997276
0.999705
0.99959
0.999883
0.999052
0.998935
0.9951
0.999617
Donc, à moins que le coup d'œil sur la page pcnormals
manuel m'a induire en erreur, cela peut être un point de départ pour une mise en œuvre Julia. Notez l'utilisation de pairwise
dans le code qui pourrait être lent pour les gros nuages de points.
Avez-vous regardé [MeshIO.jl] (https://github.com/JuliaIO/MeshIO.jl)? – rickhg12hs