傅里叶梅林变换校正图像

来源:互联网 发布:shadowsock本地端口 编辑:程序博客网 时间:2024/05/11 19:58

转载:原文网址:http://blog.csdn.net/agrapier/article/details/50297289



傅里叶-梅林变换 解决的问题是一张图片经过 旋转 缩放 平移,而且两张图片只需要有一部分相同部分,而且可以抵抗一定的噪声。 
这里写图片描述 
首先待配准的图片与原图片存在缩放量a,旋转量θ,平移量(x0,y0) 
f2 (x,y)=f1   (a(xcosθ+ysinθ)+x0,(a(xsinθ+ycosθ))+y0)

一.基础准备

1.相位相关技术 
首先根据傅里叶变换的位移性质 
存在一种叫位相相关技术的东西,可以来找平移量就是根据f(t)与f(t-t0)之间相差一个ejωt0f(t)与f(t-t0)的相位谱就相差一个-t0,然后对ejωt0进行傅里叶逆变换,我们就能在to处得到一个冲激函数(不知道的去查傅里叶变换表。。),从t0的位置就能判断出平移了多少,推广到二维就能求出平移量(x0,y0)。

2.对数极坐标变换 
这个坐标变换和熟悉的极坐标变换类似,就是f(x,y)变成g(r,Θ),然后再对r取对数 
根据这个变换,假如两个图片只存在旋转和缩放 
F2(x,y)=F1   (a(xcosθ+ysinθ),a(xsinθ+ycosθ)) 
F1(x,y) ->G1(λ,θ) 
G2(λ,θ)=G1(λ+lna,θ+θ0) 
这样旋转和缩放在对数极坐标下又变成平移关系了,然后用相位相关技术就能获得旋转和缩放量了

**

二.找出旋转缩放关系

因为对数极坐标变换只能解决只有旋转和缩放,而不包括平移的关系,所以我们在找出旋转缩放关系时先要剔除平移的因素,这时候使用的还是傅里叶变换的性质 
1.找出旋转缩放关系 
先用傅里叶变换剔除平移因子 
F2(u,v)=exp(-j(ux0+vy0)σ  ^ 2F1[σ1(ucosθ0+vsinθ0),σ1(ucosθ0+vsinθ0)] 
|F2(u,v)|=|F1[σ1(ucosθ0+vsinθ0),σ1(ucosθ0+vsinθ0)]| 
我们发现两张图片进行傅里叶变换后,幅度谱里没有x0和y0了,只有缩放和平移因子了,这时候要做一个高通滤波,然后再做对数极坐标变换,相位相关技术就能找到缩放旋转因子。 
这里写图片描述 
(冲激函数当然找不到实际操作就是找这个最大值的位置,也不要问我为什么缩放倍率是1这里写图片描述 
然后对图片旋转和缩放相应的倍数就行了 
2.找出平移量 
这个当然就很简单了,把旋转直接相位相关技术技术解决,找到平移量拼上去看看。 
这里写图片描述 
恩 效果很好

** 
**

三.其他

最近学了opencv,本来想拿opencv做一个,当时是一个作业急急忙忙的拿matlab参考别人代码做了一个,结果最近一直考试 忙的不行。以后有机会的话写个opencv代码发出来

最后发个自己做这个东西时候参考的matlab代码,参考我的数学讲解应该很好做出来了 
http://download.csdn.net/detail/agrapier/9355801 
(不是我写的 
**

自己按照这个原理用matlab生成一维的数据测了一下,抗噪声能力还不错。。
0 0
原创粉丝点击