unibas-gravis / icp-proposal

Source code to the paper "A Closest Point Proposal for MCMC-based Probabilistic Surface Registration"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error in transition probability computation

madsendennis opened this issue · comments

As highlighted on the scalismo forum (https://groups.google.com/g/scalismo/c/FytrdvlKgk4), there is an error in the current computation of the transition probability. The parameter update proposal is not correctly projected into the posterior model.

Current version:

override def logTransitionProbability(from: ModelFittingParameters, to: ModelFittingParameters): Double = {
  val posterior = cashedPosterior(from)
  val compensatedTo = to.copy(shapeParameters = ShapeParameters(from.shapeParameters.parameters + (to.shapeParameters.parameters - from.shapeParameters.parameters) / stepLength))
  posterior.logpdf(compensatedTo.shapeParameters.parameters)
  }

example of correct projection:

override def logTransitionProbability(from: ModelFittingParameters, to: ModelFittingParameters): Double = {
  val pos = cashedPosterior(from)
  val posterior = StatisticalMeshModel(referenceMesh, pos)

  val compensatedTo = from.shapeParameters.parameters + ((to.shapeParameters.parameters - 
  from.shapeParameters.parameters) / stepLength)
  val toMesh = model.instance(compensatedTo)

  val projectedTo = posterior.coefficients(toMesh)
  pos.logpdf(projectedTo)
}

Testing needs to be performed before included in the project.