# LocalWeightedMeanTransformation2D

2-D local weighted mean geometric transformation

## Description

A `LocalWeightedMeanTransformation2D` object encapsulates a 2-D local weighted mean geometric transformation.

## Creation

You can create a `LocalWeightedMeanTransformation2D` object using the following methods:

• The `fitgeotrans` function, which estimates a geometric transformation that maps pairs of control points between two images.

• The `images.geotrans.LocalWeightedMeanTransformation2D` described here. This function creates a `LocalWeightedMeanTransformation2D` object using coordinates of fixed points and moving points, and a specified number of points to use in the local weighted mean calculation.

### Syntax

``tform = images.geotrans.LocalWeightedMeanTransformation2D(movingPoints,fixedPoints,n)``

### Description

example

````tform = images.geotrans.LocalWeightedMeanTransformation2D(movingPoints,fixedPoints,n)` creates a `LocalWeightedMeanTransformation2D` object given control point coordinates in `movingPoints` and `fixedPoints`, which define matched control points in the moving and fixed images, respectively. The `n` closest points are used to infer a second degree polynomial transformation for each control point pair.```

### Input Arguments

expand all

x- and y-coordinates of control points in the moving image, specified as an m-by-2 matrix. The number of control points m must be greater than or equal to `n`.

Data Types: `double` | `single`

x- and y-coordinates of control points in the fixed image, specified as an m-by-2 matrix. The number of control points m must be greater than or equal to `n`.

Data Types: `double` | `single`

Number of points to use in local weighted mean calculation, specified as a numeric value. `n` can be as small as 6, but making `n` small risks generating ill-conditioned polynomials

Data Types: `double` | `single` | `uint8` | `uint16` | `uint32` | `uint64` | `int8` | `int16` | `int32`

## Properties

expand all

Dimensionality of the geometric transformation for both input and output points, specified as the value 2.

## Object Functions

 `outputLimits` Find output spatial limits given input spatial limits `transformPointsInverse` Apply inverse geometric transformation

## Examples

collapse all

Fit a local weighted mean transformation to a set of fixed and moving control points that are actually related by a global second degree polynomial transformation across the entire plane.

Set up variables.

```x = [10, 12, 17, 14, 7, 10]; y = [8, 2, 6, 10, 20, 4]; a = [1 2 3 4 5 6]; b = [2.3 3 4 5 6 7.5]; u = a(1) + a(2).*x + a(3).*y + a(4) .*x.*y + a(5).*x.^2 + a(6).*y.^2; v = b(1) + b(2).*x + b(3).*y + b(4) .*x.*y + b(5).*x.^2 + b(6).*y.^2; movingPoints = [u',v']; fixedPoints = [x',y'];```

Fit local weighted mean transformation to points.

`tformLocalWeightedMean = images.geotrans.LocalWeightedMeanTransformation2D(movingPoints,fixedPoints,6);`

Verify the fit of the `LocalWeightedMeanTransformation2D` object at the control points.

```movingPointsComputed = transformPointsInverse(tformLocalWeightedMean,fixedPoints); errorInFit = hypot(movingPointsComputed(:,1)-movingPoints(:,1),... movingPointsComputed(:,2)-movingPoints(:,2))```

## Algorithms

The local weighted mean transformation infers a polynomial at each control point using neighboring control points. The mapping at any location depends on a weighted average of these polynomials. The `n` closest points are used to infer a second degree polynomial transformation for each control point pair. `n` can be as small as 6, but making it small risks generating ill-conditioned polynomials.

Introduced in R2013b