Image Registration: Difference between revisions
Line 30: | Line 30: | ||
==Log-Polar Transformation== | ==Log-Polar Transformation== | ||
This is copied from Wolberg and Zokai<ref name="wolberg2000robust">George Wolberg, and Siavash Zokai. ''Robust Image Registration Using Log-Polar Transform'' URL:[https://home.cis.rit.edu/~cnspci/references/wolberg2000.pdf https://home.cis.rit.edu/~cnspci/references/wolberg2000.pdf]</ref>. | |||
The log-polar transformation is defined as follows:<br> | The log-polar transformation is defined as follows:<br> | ||
\( | \( | ||
\begin{align} | \begin{align} | ||
r | b &= \log(r) = \log\left(\sqrt{(x-x_c)^2 + (y-y_c)^2}\right)\\ | ||
a &= \operatorname{arctan2}(y-y_c, x-x_c) | a &= \operatorname{arctan2}(y-y_c, x-x_c) | ||
\end{align} | \end{align} | ||
\)<br> | \)<br> | ||
where <math>(x_c, y_c)</math> is the center of the image. | where <math>(x_c, y_c)</math> is the center of the image and <math>r</math> is the distance from the center of the image. | ||
Here a rotation in Cartesian coordinates <math>(x, y)</math> around the center \((x_c, y_c)\) corresponds to a shift in \(a\) in log-polar coordinates. | |||
A scale change (i.e. enlarge or stretch) is a shift in log-space:<br> | |||
\( \lambda r \mapsto \log(\lambda r) = \log(\lambda) + \log(r) \)<br> | |||
These translations can be found using [[Wikipedia: Cross-correlation]]. | These translations can be found using [[Wikipedia: Cross-correlation]]. | ||
;Algorithm | |||
\( \ | For each resolution from coarse to fine, do the following: | ||
# Crop central region <math>I_1'</math> from <math>I_1</math> | |||
# Compute the low-polar transformation <math>I_{1p}'</math> | |||
# For all positions \((x,y)\) | |||
## Crop region \(I_{2p}'\) | |||
## Compute \(I_{2p}'\) | |||
## Cross-correlate \(I_{1p}'\) and \(I_{2p}'\) to get \((dx, dy)\) | |||
## If max correlation, save \((x, y)\) and \((dx, dy)\) | |||
# Scale = \(dx\) | |||
==References== | ==References== |