基于FFT的图像自动配准算法试验论文分析_精品文档.doc
《基于FFT的图像自动配准算法试验论文分析_精品文档.doc》由会员分享,可在线阅读,更多相关《基于FFT的图像自动配准算法试验论文分析_精品文档.doc(9页珍藏版)》请在冰豆网上搜索。
基于快速傅立叶算法(FFT)的图像配准
l概述
图像配准的表示的是在同一坐标系下将一张图片通过图像变换使之与另一张图片在相同的地方进行重合(Cideciyan等在1992年提出的定义)。
目前的图像配准算法可以分为全局和局部两种方法。
局部方法采用分层或控制点的方法;全局方法则通过寻找针对整张图像的统一变换来自动进行图像配准。
地理图像是目前数字图像处理的一个突出应用,由于卫星影像的城乡方式一般是条状螺旋形成像,存在大量重叠,由于数据量巨大,如果纯粹靠手工劳动来对数据进行配准,无疑其工作量是不可想象的。
而且,由于手工操作的偏差,即使在人工调整的情况下,往往也不能做到尽善尽美。
针对这种情况,不少代为提出类各种自动配准算法,目前的自动配准算法可以大致分为以下几类:
1、基于图像像素值(空域);2、频域算法(FFT);3、使用低层次特性算法(例如边缘和拐角等);4、使用高层次特性算法(例如可识别物体、事物之间的关联特性等)。
本文采用的算法是FFT,基于FFT进行图像配准的研究工作已经进行了很多年。
例如,Kuglin和Hines开发了一种使用傅立叶变换某些行的相位校正法;DeCastro和Morandi发现了通过傅立叶变换来发现移动和旋转的方法;Cideciyan等确定了通过离散的相位校正函数来获得更高的相位校正。
Reddy和Chatterji对DeCastro和Morandi的算法进行了改进,大大减少了需要进行转换的次数。
对于Reddy和Chatterji算法的更进一步理论研究被Sierra所确立。
l算法的简要描述
基于快速傅立叶算法的自动配准主要依赖于傅立叶转换定理:
特定的“比率”定值的图像直接的差异。
假定图像I1和I2的区别只有偏移的话,那么对于(x0,y0)[可表示为,I2(x,y)=I1(x-x0,y-y0)]其傅立叶变换的公式可以写为:
图像I1和I2的比例定义为:
其中conj表示共轭复数,abs表示绝对值。
通过对R进行傅立叶逆变换,除了相邻位置有单点之外其他地方基本上为0.这些单点就是在傅立叶逆变换中R具有最大值的位置。
而这些点正是我们对图像进行校准所需要的偏移位置。
如果我们将直角坐标系转换为极坐标,纳闷我们可以在地理配准过程中计算得出需要的旋转和移动的比例。
如果两张图像的区别只是偏移、旋转、缩放,那么将abs(F(x,h))从直角坐标系(x,y)转换到极坐标系(log(r),q)将更好的表现这些变化。
然而,在从原始的点阵转换到直角坐标系时,点不一定完全在原来的位置上。
因此,需要在目标栅格针对abs(F(x,h))进行插值计算。
一般采用双线插值算法具有较好的使用效果。
坐标系转换函数为:
通过插值寻找M(x,y)的新值需要使用环绕(x,y)的点(j,k),(j+1,k),(j,k+1),以及(j+1,k+1)的值Mjk,Mj+1,k,Mj,k+1,Mj+1,K+1。
M(x,y)的插值可以计算为:
其中t是x的比例,u是y的比例。
最终决定旋转、缩放、平移的算法为:
1)通过FFT算法将图像进行转化(计算F1(x,h)和F2(x,h));
2)计算F1(x,h)和F2(x,h)的绝对值;
3)采用高通滤波器的绝对值来消除低频噪声;
4)在极坐标系对图像进行快速傅立叶变换(Flp1(x,h)和Flp2(x,h));
5)采用公式
(2)计算Flp1(x,h)和Flp2(x,h)的比例R;
6)计算比例R1的快速傅立叶变换的逆运算IR1;
7)找到位置()的最大abs(IR1),计算向量距离()和旋转角度();
8)通过I2或者I1凡旋转和缩放构造新图像I3;
9)根据选择的基准图像对I1和I3(或I2和I3)应用FFT;
10)根据方程式
(2)计算R2;
11)通过对R2进行FFT逆运算得到IR2;
12)通过abs(IR2)的最大值获得(x0,y0)的偏移量。
计算得到的结果就是两张图像配准所需要的参数:
旋转、缩放、平移。
l验证代码
function[xtran,ytran,delta]=computedelta(im1,im2)
%pre-aligntwoimagesinfrequecydomain
%粗估算两幅图像之间的平移差,返回水平方向平移差到xtran,返回垂直方向平移差到ytran
%用在图像配准中的粗匹配中!
if(size(im1,3)==3)
im1=rgb2gray(im1);
im2=rgb2gray(im2);
end
im1=double(im1);
im2=double(im2);
F1=fft2(im1);
F2=fft2(im2);
fz=F1.*conj(F2);
fm=abs(F1.*F2);
div=fz./fm;
delta=ifft2(div);
maxvalue=max(max(delta));
delta=fliplr(flipud(delta));
imshow(delta,[]);
[ytran,xtran]=find(delta==maxvalue);
if(max(max(delta))==1)%完全相关,即表明两幅图像完全一样
xtran=0;
ytran=0;
elseif(ytran==size(im1,1))
ytran=0;
elseif(xtran==size(im1,2))
xtran=0;
end
end
end
fprintf('图像2相对于图像1的位移量(单位-像素):
\n水平方向(x方向):
%d\n竖直方向(y方向):
%d\n',xtran,ytran);
End
l测试图像
测试图像是从一张图片上截断成两张,如下图:
代码执行结果:
运行界面:
程序执行后得到的配准结果:
测试图像2:
l结论
程序能够对这种图片进行准确的配准和拼接,对于具有噪声的图片具有较好的配准效果。
l不足之处
一、图像需要在相似的季节拍摄,不能具有很大的差别
二、图像必须是正方形(FFT算法导致)
三、对于几何失真效果不好