Repository navigation
Comparing Nuth–Kääb co-registration and direct NMAD-based optimization #1010
Replies: 1 comment
|
@sgascoin Thanks a lot for sharing! This is great to know for everyone here, and also very reassuring as I found similar results on my side. To delve into more details into what you present above: After digging a lot into it these past years, I found that it comes down to the fact that the underlying maths for these two methods are pretty much exactly the same (when using the same objective function, so not technically when using the NMAD, would need an L2 loss instead, but close enough). So it makes perfect sense they would agree so well! Going deeper, I found that the maths of LZD and Nuth and Kääb are also exactly the same, one is just expressed in polar coordinates (Nuth and Kääb), while the other is expressed in cartesian while accounting for rotations (LZD). So Nuth and Kääb essentially re-invented the same maths, but only for translations (no rotations), 23 years later. Rosenholm & Torlegard had it all figured out in 1988! 🥲 I did find some slight difference in performance there. It seems the conversion in trigonometrical functions of NK reduces the overall accuracy (but not much), so LZD is very slightly better. I couldn't find another reason for the cause. So based on the above, the impact of these differences is (if I'm not missing anything):
We've been waiting to highlight this in the documentation until the paper is out as a preprint. Its objective is partly to clarify these things, but mostly to do a wider comparison with point registration, and constrain uncertainty propagation/robustness through many different terrain settings (a bit in the same direction as your added jitter above, but not only numerical, also analytical). |
Uh oh!
There was an error while loading. Please reload this page.
I examined how Nuth–Kääb co-registration algorithm compares with a more direct strategy that minimizes NMAD using the Nelder–Mead algorithm. Until now I have mostly used NMAD optimization in my case studies, as I found it more straighforward to implement but I see that everyone uses Nuth-Kääb. I evaluated both methods on a synthetic DEM with a known subpixel translation and vertical offset, and on a Copernicus GLO-30 sample with the same translation plus controlled perturbations: a 1° rotation, planar elevation tilt, combined rotation and tilt, and sinusoidal jitter. See the full code in this notebook.
For a clean translation, both methods recover the known offset closely. Under rotation and tilt, the residuals remain large, which is expected because both approaches are limited to translation. The direct NMAD optimization yields slightly lower NMAD values (as expected since it minimizes it), but the Nuth–Kääb formulation generally recovers the horizontal shift more accurately (lower norm error). Computation time is also higher for Nelder–Mead, although the difference is not substantial because both algorithms evaluate only a random subset of up to 1e5 pixels to maintain speed.
In conclusion, both methods perform equally well in the tested cases.
Illustration 1: synthetic case
Illustration 2: real-world DEM + synthetic jitter
Nuth-Kääb
NMAD optimization
Residual histograms
All reactions