Sub pixel registration methods?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Sub pixel registration methods?
Hi,
I'm doing some sub-pixel image registration algorithms at the moment. I've been using the classic FFT based convolution to get to pixel level accuracies.
I start with the two image extracts A and B. I then apply a weighting/masking/apodisation to soften the edges. The patches are then FFT'd adn each frequency component normalised to unity if it is above the base band noise (a known prior). I do the complex conjugate product (schurr/excel style) which creates the phase difference of each component. I can then do an inverse FFT to see where the phase correlation spike is located, which indicates the image shift. The shift value is obviously an integer number of pixels.
One method of increasing the resolution is to add a border of zeros around the FTT so as to produce an effective interpolation around the original peak, but this is 'expensive'
My question is does anyone know of any alternative (preferably fast) approaches to recovering the phase slope from the patch of phase values? The phase values are of the cos(t)+i.sin(t) type and the phase will wrap across the patch.
I'm looking for suggestions as to methods I can look up, rather than doing it directly in MathCAD. The main part I'm trying to find is that it should achive sub-pixel level accuracy and be at least as fast as the inverse FFT.
Philip
- Labels:
-
Statistics_Analysis
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Here's an old worksheet from Xavier. It's for 1D data, not 2D, but you might find some useful ideas in it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Looks interesting.
I see that a 2nd order (parabolic) fit is found to fit the peak of the correlation.
I'll have a look at what that might do for my fit using phase correlation. I'll need to do a 2-d parabola...
Philip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
regress will fit a 2D quadratic for you. That should work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi,
2D images have 3 DOF: 2 translation and 1 rotation.
Assuming the same spatial distortions (camera, etc.), get close (<1.5 px) with overlaying small patches at corners and center (translation only here).
There are better algorithms, but you could simply cross-correlate/FFT etc**. two perpendicular stripes,
Width of stripe averaged w/apodization to make insensitive to its narrow direction.
Sandy
** Better algorithms adjust to strengths of slopes and local noise.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Sandy,
At this stage we are using small local patches, so that we get local [Sub-Pixel] motion, but we then have to join all the estimates together to get a 'world' rotation estimate (e.g. quaternion). The cameras do give a wide field of view so spherical projection issues are apparent, so if you have any references to those better algorithms I'd be grateful.
The sub-pixel motion estimates are great when we either have small motions we need to track, or in the rotation regions wher the lever arm is short.
Philip
