1 简介
本文提出了一种基于傅里叶的图像自动配准方法,图像间的变化包括平移,旋转及比例变化.该方法是傅里叶相位相关技术的扩展,其主要优点是在不需要寻找控制点和传感器参数的情况下进行图像自动配准.通过对数一极坐标变换,利用傅里叶变换的比例特性和旋转特性搜索图像问的比例和旋转变化,利用傅里叶的相位相关技术(能量谱)确定图像间的平移关系,实验结果表明了此方法的可行性和有效性.
2 部分代码
% I=imread('lena.bmp');
% I=double(I);
% I=imrotate(I,90);
%
% Ic=fftshift(fft2(I));
% logIc=log(1+abs(Ic));
% figure(3);
% imshow(logIc,[]);
% output = logpolar(logIc);
% figure(4);
% imshow(output,[]);
%%%%%%%验证两幅图像的傅里叶梅林变换的幅值是否相等
clear;
clc;
close all
% Load first image (I1)
I1 = imread('lena_cropped_rotated_shifted.bmp');
I1=double(I1);
% Load second image (I2)
I2 = imread('lena.bmp');
I2=double(I2);
% ---------------------------------------------------------------------
% Convert both to FFT, centering on zero frequency component
SizeX = size(I1, 1);
SizeY = size(I1, 2);
FA = fftshift(fft2(I1));
FB = fftshift(fft2(I2));
% Output (FA, FB)
% ---------------------------------------------------------------------
% Convolve the magnitude of the FFT with a high pass filter)
% IA = hipass_filter(size(I1, 1),size(I1,2)).*abs(FA);
% IB = hipass_filter(size(I2, 1),size(I2,2)).*abs(FB);
IA=abs(FA);
IB=abs(FB);
% Transform the high passed FFT phase to Log Polar space
L1 = transformImage(IA, SizeX, SizeY, SizeX, SizeY, 'nearest', size(IA) / 2, 'valid');
L2 = transformImage(IB, SizeX, SizeY, SizeX, SizeY, 'nearest', size(IB) / 2, 'valid');
% Convert log polar magnitude spectrum to FFT
THETA_F1 = fftshift(fft2(L1));
THETA_F2 = fftshift(fft2(L2));
LogTHETA_F1=log(1+abs(THETA_F1));
LogTHETA_F2=log(1+abs(THETA_F2));
R = corrcoef(normlize(LogTHETA_F2(:)),normlize(LogTHETA_F1(:)));
figure(1);
subplot(221)
imshow(I1,[]);title('原图1')
subplot(222)
imshow(LogTHETA_F1,[]);title('傅里叶变换')
subplot(223)
imshow(I2,[]);title('原图2')
subplot(224)
imshow(LogTHETA_F2,[]);title('傅里叶变换')
3 仿真结果
4 参考文献
[1]强赞霞, 彭嘉雄, & 王洪群. (2004). 基于傅里叶变换的遥感图像配准算法. 红外与激光工程, 33(4), 4.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页