基于相位相关的图像配准技术

一、相位相关法的基本原理

依据:傅里叶变换的平移性质(注:此文仅针对平移失配的问题展开讨论)

现给定两幅 $ 2D $ 图像 $ I_{1}(x,y) $ 和 $ I_{2}(x,y) $ ,它们之间的唯一区别是一个平移量 $ (d_{x},d_{y}) $ ,即: \[ I_{2}(x, \; y) = I_{1}(x-d_{x}, \; y-d_{y}) \] 则它们的傅里叶变换 $ F_{1} $ 和 $ F_{2} $ 满足关系: \[ F_{2}(\omega_{x},\omega_{y}) = e^{-j(\omega_{x}d_{x} + \omega_{y}d_{y})}F_{1}(\omega_{x},\omega_{y}) \] 对二者取模,发现它们的幅值相等,仅差了一个相位\[ |F_{2}(\omega_{x},\omega_{y})| = |e^{-j(\omega_{x}d_{x} + \omega_{y}d_{y})}F_{1}(\omega_{x},\omega_{y})| = |e^{-j(\omega_{x}d_{x} + \omega_{y}d_{y})}| \; \times \; |F_{1}(\omega_{x},\omega_{y})| = |F_{1}(\omega_{x},\omega_{y})| \] 于是,定义两幅图像的互功率谱\[ \frac{F_{1}(\omega_{x},\omega_{y})F_{2}^*(\omega_{x},\omega_{y})} {|F_{1}(\omega_{x},\omega_{y})F_{2}^*(\omega_{x},\omega_{y})|} = e^{j(\omega_{x}d_{x} + \omega_{y}d_{y})} \] 对其进行傅里叶逆变换,可以得到一个冲激函数:(它在其它各处几乎为零,只在平移的位置上不为零\[ {\scr{F}^{-1}}(e^{j(\omega_{x}d_{x} + \omega_{y}d_{y})}) = \delta(x+d_{x}, \; y+d_{y}) \] 通过寻找冲激函数的位置,便能确定平移量 $ (d_{x},d_{y}) $ 的大小

因此,总结起来,相位相关技术就是确定互功率谱相位的傅里叶逆变换的峰值的位置

相位差对于所有频率的作用是相同的,因此即使图像中混有窄带噪声,也不会使峰值的位置发生变化

另外,待配准的图像还可以有不同的亮度,因为亮度的变化通常是缓慢的,集中在低频部分,且不影响峰值的位置


二、相位相关法的代码实现

(1)实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
close all;clear;clc;
I = imread( 'head.tif' );
if size(I,3) == 3
I = rgb2gray(I);
end
transI = imtranslate(I,[100,80]);
figure; imshowpair(I,transI,'montage');
figure; imshowpair(I,transI);
[row,col] = size(I);
FFT1 = fft2(I);
FFT2 = conj(fft2(transI));
FFTR = FFT1 .* FFT2;
FFTRN = (FFTR ./ abs(FFTR));
result = ifft2(FFTRN);
[i,j] = find(result == max(result(:)));
res = [col+1-j,row+1-i]; % 修正坐标
corrI = imtranslate(transI,-res);
figure; imshowpair(I,corrI);
figure; colormap('jet'); mesh(result); axis off;
(2)实现效果:

这是手动添加 $ (100,80) $ 平移量的效果:

若直接“配准”,会产生如下效果:

使用相位相关法修正平移量后,再进行配准:

最后观察一下冲激函数:


三、参考文章

EbowTang的博客

上官晋太的《图像配准中的若干问题研究》