interpolateDisplacementField: evaluate a displacement field using gaussian smoothed...

View source: R/displacementField.r

interpolateDisplacementFieldR Documentation

evaluate a displacement field using gaussian smoothed interpolation of a discrete displacement field

Description

evaluate a displacement field using gaussian smoothed interpolation of a given discrete displacement field

Usage

interpolateDisplacementField(
  dispfield,
  points,
  k = 10,
  sigma = 20,
  gamma = 1,
  type = c("Gauss", "Laplace", "Exponential", "Bspline", "TPS"),
  subsample = 2000,
  lambda = 1e-08,
  threads = 0,
  ...
)

Arguments

dispfield

@param dispfield displacement field of class "DisplacementField", e.g. created using createDisplacementField

points

matrix or mesh3d at which to evaluate the interpolated displacement field

k

integer: number of k closest points to evaluate.

sigma

kernel bandwidth used for smoothing. For all kernels except B-spline, sigma controls the importance of the neighbourhood by defining the bandwidth of the smoothing kernel. For B-spline it defines the support (the higher, the "wobblier" the deformation field can become.

gamma

dampening factor (displacement vectors will be divided by gamma

type

kernel function for smoothing are "Gauss","Laplace", "Exponential", "Bspline" and "TPS" (or any abbreviation thereof).

subsample

integer: amount to subsample the field in case of type="TPS"

lambda

smoothing factor for TPS

threads

integer: number of threads to use for computing the interpolation.

...

additional parameters - currentyl unused.

Value

returns an interpolated displacement field of class displacement_field at the positions of points.

Note

The k-closest coordinates of the displacement field are used to calculate a weighted (smoothed) displacement field for each point. The displacement field can then optionally be further smoothed using the function smoothDisplacementField. The smoothing kernels are "Gauss","Laplace" and "Exponential". The displacement at point x will be the weighted displacment vectors of the k-closest displacement vectors. Be d the distance to a neightbouring point, the weight will be calculated as:

Gaussian: w(d) = exp(\frac{-d^2}{2\sigma^2})

Laplacian: w(d) = exp(\frac{-d}{\sigma})

Exponential: w(d) = exp(\frac{-d}{2\sigma^2})

See Also

plot.DisplacementField, applyDisplacementField, smoothDisplacementField

Examples

require(Rvcg);require(Morpho)
data(dummyhead)
humoff <- meshOffset(dummyhead.mesh,offset=5)
dispfield <- createDisplacementField(dummyhead.mesh,humoff)
## Not run: 
## this only runs with latest Rvcg build from master
highres <- vcgSubdivide(dummyhead.mesh)
ifield <- interpolateDisplacementField(dispfield,highres,threads=2,sigma = 10,k=50)

## End(Not run)

zarquon42b/mesheR documentation built on Jan. 28, 2024, 2:17 p.m.