a displacement that varies only along the slow scan direction
Temporal drift during a scan: the beam returns to the start of each line at a stage position slightly different from the last, so the whole line is displaced together and the displacement accumulates down the scan. Modelled as a linear spline in the slow scan coordinate alone - a rolling shutter, not a smooth field.
Which direction is the slow scan is a fact about the acquisition, not about the data, so it is carried rather than inferred. After resampling or rotation it is no longer grid dimension 1.
The spline is defined between its outermost knots and NOT beyond, so positions outside the measured band come back NaN rather than extrapolated. That is deliberate - it is what marks the region the correction is supported on. Pass 'extrapolate' to continue the end segments instead.
Syntax
T = spatialTransformDrift(s,u)
T = spatialTransformDrift(s,u,'slowScan',xvector)
T = spatialTransformDrift.fit(posA,posB)
T = spatialTransformDrift.fit(posA,posB,'slowScan',xvector,'extrapolate')Input
| s | n × 1 knot coordinates along the slow scan direction |
| u | n × 2 displacement at each knot |
| posA, posB | vector3d, the same points in the two frames |
Output
| T | spatialTransformDrift |
Class Properties
| s | n × 1 knots, ascending |
| u | n × 2 displacement at the knots |
| slowScan | vector3d, the direction the spline runs along |
| extrapolate | continue the end segments instead of returning NaN |