Prediction Improvement
Search Center Predictions improved where each search starts. This chapter improves what each search returns: the point's predicted position in the current image.
Chapter 8 never had to report a position between pixels. It avoided
that in two ways. Simple Stretch stretched the
image by and placed every point at an that is a
multiple of 50. Only those values stretch onto whole pixels. That
kept dictk.translation.locate
exact, because locate returns whole pixels only. It also capped the
grid, at 12 points and then 250 in Simple Stretch
Revisited. Pure
Rotation took the other way. It rounded each
rotated point's true position to the nearest pixel before scoring
locate against it.
VIC-2D measured the same stretch on a 53x54 grid, 5 px apart, starting
at . No on that grid is a multiple of 50. So every one of
its 2862 true positions falls between pixels. locate can only report
a whole pixel, so it misses every one of them. A real specimen poses the same problem.
Its displacements don't land on whole pixels either.
The four pages of this chapter take that on in order:
- Subpixel Accuracy adds
locate_subpixel, which returns a fractional position. On the 2862-point grid, it cutslocate's mean position error by about a third. - High Point Density computes strain from
all 2862 tracked points. That strain spreads far wider than VIC-2D's:
dictk's ranges from about -16400 to 106100 microstrain, more than 21 times VIC-2D's own range of about 17300 to 23100. - Kernel Warping traces that spread to an error
in
locate_subpixeltied to where each true position falls within its pixel. It addslocate_warp, which lets the kernel stretch and shear along with the material. The standard deviation falls from 16531 to 1161 microstrain, against VIC-2D's 1385. - Seed Propagation measures where
locate_warp's rigid whole-pixel seed breaks. Under a 10% stretch,locate_warpmisses 5 of 30 random points by more than 1 px. Under a 20% stretch, it misses at least 22 of 30 at every shear tested.