Use reproject for image registration #317
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #112
This is a first pass at using the
reproject
package to perform image registration by constructing a WCS for the aligned, translated, and scaled image and reprojecting the input map into that new WCS. This also now works for submaps. Note that this does not add a dependency asreproject
is an optional dependency of sunpy that we already pick up by requiringsunpy[map]
.I've marked this as a draft because it still needs quite a bit of cleaning up and I'd like several pairs of eyes on it before we even think about merging (if we do at all).
There is also the issue of performance. This is markedly slower for full-disk images by an OOM.
However, this version does have the advantage that prep on submaps is possible. Additionally,
reproject
offers several different algorithms for performing the actual reprojection and there are proposed performance improvements.. There is also progress being made on parallelizing themap_coordinates
function with Dask which is the underlying scipy function called byreproject_interp
. There's also a cupy version ofmap_coordinates
.All my comments above are assuming that the performance bottleneck is the
map_coordinates
function, i.e. the actual interpolation of the array onto the new coordinates. While this is almost certainly true, it should be confirmed with some profiling.Some TODOs:
register