# pcregistercorr

Register two point clouds using phase correlation

## Syntax

## Description

computes the rigid transformation that registers the moving point cloud,
`tform`

= pcregistercorr(`moving`

,`fixed`

,`gridSize`

,`gridStep`

)`moving`

, to the fixed point cloud,
`fixed`

using a phase correlation algorithm.

The function performs registration by first converting both point clouds to a
2-D occupancy grid in the *X*-*Y* plane with
center at the origin (0,0,0). The occupancy of each grid cell is determined
using the *Z*-coordinate values of points within the
grid.

`[___,`

additionally returns the peak correlation value of the phase difference between
the two occupancy grids.`peak`

] = pcregistercorr(___)

`[___] = pcregistercorr(___,`

specifies options using one or more name-value arguments in addition to any
combination of arguments from previous syntaxes. For example,
`Name=Value`

)`Window=false`

sets the `Window`

name-value argument to `false`

to suppress using windowing
.

## Examples

## Input Arguments

## Output Arguments

## Tips

The phase correlation method is best used to register point clouds when the transformation can be described by a translation in the

*X*-*Y*plane and a rotation around the*Z*-axis. For example, a ground vehicle with a horizontally mounted lidar moving on a flat surface.The phase correlation algorithm expects motion to be exclusively along the

*X*-*Y*plane, as with the ground plane. If motion is not exactly in the*X*-*Y*plane, you can use the`normalRotation`

function to transform the point clouds. For example, in vehicular motion, you can reduce the effects of vehicle suspension or surface features such as potholes and speed bumps by using the`normalRotation`

function.Increasing the size of the occupancy grid increases the computational demands of this function. You can control the size of the occupancy grid by modifying the

`gridSize`

and`gridStep`

arguments.If you obtain poor registration results and the

`peak`

correlation value is less than`0.03`

, try setting the`Window`

argument to`false`

.

## References

[1] Dimitrievski, Martin, David Van Hamme, Peter Veelaert, and
Wilfried Philips. “Robust Matching of Occupancy Maps for Odometry in Autonomous
Vehicles.” In *Proceedings of the 11th Joint Conference on Computer Vision,
Imaging and Computer Graphics Theory and Applications*, 626–33. Rome,
Italy: SCITEPRESS - Science and Technology Publications, 2016.

## Version History

**Introduced in R2020b**

## See Also

### Functions

`pcregisterndt`

|`pcregistercpd`

|`pctransform`

|`pcshow`

|`pcshowpair`

|`pcdownsample`

|`pcfitplane`

|`pcdenoise`

|`pcmerge`