在对同一个物体进行长时间拍摄的过程中,难免会因为一些外界原因,比如,物体的移动,导致拍摄的物体在成像平面中发生移动。这时,在分析某一特定区域长时间的特性之前,要对成像得到的图像进行校正。
本文中针对二维图像水平和竖直方向移动进行校正。校正的方法有很多种,有的是通过搜索、迭代、优化,找到最优解的。而本文中采用了利用互相关的方法,可以做到在一定假设的条件下,直接得到x、y平移的数值。
1 互相关用于图像配准原理介绍
假设图像
根据傅里叶变换定理
根据互相关函数的定义
计算傅里叶变换,可得
其中,
将上式求反傅里叶变换,可得
由自相关函数的性质可知,函数
2 举例
例子中的图像来自文章[1],
左图是
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