利用互相关方法校正二维图像移动
2017-04-11 19:53
741 查看
在对同一个物体进行长时间拍摄的过程中,难免会因为一些外界原因,比如,物体的移动,导致拍摄的物体在成像平面中发生移动。这时,在分析某一特定区域长时间的特性之前,要对成像得到的图像进行校正。
本文中针对二维图像水平和竖直方向移动进行校正。校正的方法有很多种,有的是通过搜索、迭代、优化,找到最优解的。而本文中采用了利用互相关的方法,可以做到在一定假设的条件下,直接得到x、y平移的数值。
1 互相关用于图像配准原理介绍
假设图像f2是f1经过平移得到的,那么
f2=f1(x−Δx,y−Δy)
根据傅里叶变换定理
F2(u,v)=F1(u,v)e−2πj(uΔx+vΔy)
根据互相关函数的定义
Rccf(x,y)=f1(x,y)∗f2(−x,−y)
计算傅里叶变换,可得
Rccf(u,v)=F1(u,v)F∗2(u,v)=F1F∗1e2πj(uΔx+vΔy)=F(u,v)e2πj(uΔx+vΔy)
其中,F(u,v)=F1F∗1
将上式求反傅里叶变换,可得
Rccf(x,y)=F(x,y)∗δ(x−Δx,y−Δy)=F(x−Δx,y−Δy)
由自相关函数的性质可知,函数F(x,y)的峰值在原点处,因此R(x,y)的峰值出现在点(Δx,Δy)处,也就是函数f2(x,y)的偏移量。
2 举例
例子中的图像来自文章[1],f1和f2是在不同时刻拍摄到的图像。两幅图像的大小均为200∗200。现在需要将其配准,其便于研究其中神经元的活动情况(荧光亮度)。
左图是f1,右图是f2
Matlab 代码如下
计算结果
offset_row = 3
offset_col = 2
利用校正前和校正后两幅图像的差值进行检验
从上面的图像可以看出,在经过校正后,图像的相似度提高了。
另外,Matlab官方文档中的一个例子。它利用互相关来实现寻找最优匹配的例子。其实质和图像校正是一致的,都是通过计算互相关系数,找到两幅图像之间最匹配时平移的距离。
有问题,随意提出,共同进步。
[1] Ming Li, Fang Liu, Hongfei Jiang, Tai Sing Lee, Shiming Tang (2017) Long-Term Two-Photon Imaging in Awake Macaque Monkey, Neuron
本文中针对二维图像水平和竖直方向移动进行校正。校正的方法有很多种,有的是通过搜索、迭代、优化,找到最优解的。而本文中采用了利用互相关的方法,可以做到在一定假设的条件下,直接得到x、y平移的数值。
1 互相关用于图像配准原理介绍
假设图像f2是f1经过平移得到的,那么
f2=f1(x−Δx,y−Δy)
根据傅里叶变换定理
F2(u,v)=F1(u,v)e−2πj(uΔx+vΔy)
根据互相关函数的定义
Rccf(x,y)=f1(x,y)∗f2(−x,−y)
计算傅里叶变换,可得
Rccf(u,v)=F1(u,v)F∗2(u,v)=F1F∗1e2πj(uΔx+vΔy)=F(u,v)e2πj(uΔx+vΔy)
其中,F(u,v)=F1F∗1
将上式求反傅里叶变换,可得
Rccf(x,y)=F(x,y)∗δ(x−Δx,y−Δy)=F(x−Δx,y−Δy)
由自相关函数的性质可知,函数F(x,y)的峰值在原点处,因此R(x,y)的峰值出现在点(Δx,Δy)处,也就是函数f2(x,y)的偏移量。
2 举例
例子中的图像来自文章[1],f1和f2是在不同时刻拍摄到的图像。两幅图像的大小均为200∗200。现在需要将其配准,其便于研究其中神经元的活动情况(荧光亮度)。
左图是f1,右图是f2
Matlab 代码如下
clear I1 = imread('f1.tif');%f1 (reference image) FI1 = fft2(I1); I2 = imread('f2.tif');%f2 (floating image) FI2 = fft2(I2); FR = FI1.*conj(FI2);%calculating correlation R = ifft2(FR); R = fftshift(R); num = find(R==max(R(:))); [i,j] = ind2sub(size(R), num); offset_x = i-100 offset_y = j-100 R = R/max(R(:)); figure %coefficient of correlation in spatial domain imshow(R,[]) [X,Y] = meshgrid(1:200); figure mesh(X,Y,R) figure subplot(1,2,1) imshow(I1-I2);title('before registration') subplot(1,2,2) I3 = imtranslate(I2, [2,3]); imshow(I1-I3);title('after registration')
计算结果
offset_row = 3
offset_col = 2
利用校正前和校正后两幅图像的差值进行检验
从上面的图像可以看出,在经过校正后,图像的相似度提高了。
另外,Matlab官方文档中的一个例子。它利用互相关来实现寻找最优匹配的例子。其实质和图像校正是一致的,都是通过计算互相关系数,找到两幅图像之间最匹配时平移的距离。
有问题,随意提出,共同进步。
[1] Ming Li, Fang Liu, Hongfei Jiang, Tai Sing Lee, Shiming Tang (2017) Long-Term Two-Photon Imaging in Awake Macaque Monkey, Neuron
相关文章推荐
- 利用ASM进行方法拦截中获取相关数据的实现
- Java中利用JCOM实现操作Excel 相关方法解释
- 利用移动应用提高企业收入的7大方法
- MATLAB 图像二维傅里叶变换及相关计算
- 利用二维图像的深度估计
- 连接数据库和相关数据库操作——之我的方法 利用OLEDB
- 各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
- Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。
- 利用移动应用提高企业收入的7大方法
- 利用matlab求图像均值和方差的几种方法
- 快速了解制做SEO网站的方法,怎么利用百度相关产品
- 一种校正图像失真的工程方法
- 一种校正图像失真的工程方法
- 利用Rsyslog集中收集系统日志和用户操作记录以及相关处理方法 推荐
- 利用MFC和opencv读取视频显示图像方法
- (转载)利用C语言实现计算机图像处理的方法
- 利用FFT计算相关时序列相对移动的细节说明
- 利用C语言实现计算机图像处理的方法
- 利用梯度方向在图像上提取直线的方法
- 利用OpenCV进行图像伽马校正