您的位置:首页 > 其它

傅里叶-梅林变换实现图像配准

2015-12-14 16:50 405 查看
傅里叶-梅林变换 解决的问题是一张图片经过 旋转 缩放 平移,而且两张图片只需要有一部分相同部分,而且可以抵抗一定的噪声。



首先待配准的图片与原图片存在缩放量a,旋转量θ,平移量(x0,y0)

f2 (x,y)=f1 (a(xcosθ+ysinθ)+x0,(a(−xsinθ+ycosθ))+y0){{f}_{2}}~\left( x,y \right)={{f}_{1}}\text{ }\!\!~\!\!\text{ }\left( a\left( xcos\theta +ysin\theta \right)+{{x}_{0}},\left( a\left( -xsin\theta +ycos\theta \right) \right)+{{y}_{0}} \right)

一.基础准备

1.相位相关技术

首先根据傅里叶变换的位移性质

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

2.对数极坐标变换

这个坐标变换和熟悉的极坐标变换类似,就是f(x,y)变成g(r,Θ),然后再对r取对数

根据这个变换,假如两个图片只存在旋转和缩放

F2(x,y)=F1 (a(xcosθ+ysinθ),a(−xsinθ+ycosθ)){{F}_{2}}\left( x,y \right)={{F}_{1}}\text{ }\!\!~\!\!\text{ }\left( a\left( xcos\theta +ysin\theta \right),a\left( -xsin\theta +ycos\theta \right) \right)

F1(x,y){{F}_{1}}\left( x,y \right) ->G1(λ,θ)\left. {{G}_{1}}(\lambda ,\theta \right)

G2(λ,θ)=G1(λ+lna,θ+θ0)\left. {{G}_{2}}\left( \lambda ,\theta \right)={{G}_{1}}(\lambda +\mathbf{ln}a,\theta +{{\theta }_{0}} \right)

这样旋转和缩放在对数极坐标下又变成平移关系了,然后用相位相关技术就能获得旋转和缩放量了

**

二.找出旋转缩放关系

因为对数极坐标变换只能解决只有旋转和缩放,而不包括平移的关系,所以我们在找出旋转缩放关系时先要剔除平移的因素,这时候使用的还是傅里叶变换的性质

1.找出旋转缩放关系

先用傅里叶变换剔除平移因子

F2(u,v)=exp(-j(ux0+vy0)σ ^ 2F1[σ−1(ucosθ0+vsinθ0),σ−1(−ucosθ0+vsinθ0)]{{F}_{2}}(\text{u},\text{v})=\tfrac{\text{exp(-j(u}{{x}_{0}}+\text{v}{{\text{y}}_{\text{0}}}\text{)}}{\sigma \text{ }\!\!\hat{\ }\!\!\text{ 2}}{{F}_{1}}\left[ {{\sigma }^{-1}}(u\cos {{\theta }_{0}}+v\sin {{\theta }_{0}}),{{\sigma }^{-1}}(-u\cos {{\theta }_{0}}+v\sin {{\theta }_{0}}) \right]

|F2(u,v)|=|F1[σ−1(ucosθ0+vsinθ0),σ−1(−ucosθ0+vsinθ0)]|\left| {} \right.{{F}_{2}}(u,v)\left. {} \right|=\left| {} \right.{{F}_{1}}\left[ {{\sigma }^{-1}}(u\cos {{\theta }_{0}}+v\sin {{\theta }_{0}}),{{\sigma }^{-1}}(-u\cos {{\theta }_{0}}+v\sin {{\theta }_{0}}) \right]\left. {} \right|

我们发现两张图片进行傅里叶变换后,幅度谱里没有x0和y0了,只有缩放和平移因子了,这时候要做一个高通滤波,然后再做对数极坐标变换,相位相关技术就能找到缩放旋转因子。



(冲激函数当然找不到实际操作就是找这个最大值的位置,也不要问我为什么缩放倍率是1


然后对图片旋转和缩放相应的倍数就行了

2.找出平移量

这个当然就很简单了,把旋转直接相位相关技术技术解决,找到平移量拼上去看看。



恩 效果很好

**

**

三.其他

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

最后发个自己做这个东西时候参考的matlab代码,参考我的数学讲解应该很好做出来了

http://download.csdn.net/detail/agrapier/9355801

(不是我写的

**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: