Hi,
I have a question about the main difference when I call icp iteratively with these two versions. I tried to re-factor some codes and I didn't get the same results for the two versions.
In the first version, I instatiate a sampler outside the icp code but the sampling (i.e. pointsOnTarget are both inside the icp method).
Thank you very much,
Best regards,
Maia
================
First version:
val sampler = UniformMeshSampler3D(partialMesh, nbOfSamplePoints)(Random(10L))
def icp(modelInstance : TriangleMesh[_3D], partialMesh : TriangleMesh[_3D], noiseVariance : Double) : TriangleMesh[_3D] = {
val pointsOnTarget = sampler.sample().map(_._1)
val idTargetPointPairs = for (pointOnTarget <- pointsOnTarget) yield {
val ptId = modelInstance.pointSet.findClosestPoint(pointOnTarget).id
(ptId, pointOnTarget)
}
pdm.posterior(idTargetPointPairs, noiseVariance).mean
}
===============
Second version:
def icp(modelInstance: TriangleMesh[_3D],partialMesh: TriangleMesh[_3D],noiseVariance: Double,nbOfPoints: Int): TriangleMesh[_3D] = {
val sampler = UniformMeshSampler3D(partialMesh, nbOfPoints)(Random(10L))
val pointsOnTarget = sampler.sample().map(_._1)
val idTargetPointPairs = for (pointOnTarget <- pointsOnTarget) yield {
val ptId = modelInstance.pointSet.findClosestPoint(pointOnTarget).id
(ptId, pointOnTarget)
}
pdm.posterior(idTargetPointPairs, noiseVariance).mean
}