天天看點

利用互相關方法校正二維圖像移動

在對同一個物體進行長時間拍攝的過程中,難免會因為一些外界原因,比如,物體的移動,導緻拍攝的物體在成像平面中發生移動。這時,在分析某一特定區域長時間的特性之前,要對成像得到的圖像進行校正。

本文中針對二維圖像水準和豎直方向移動進行校正。校正的方法有很多種,有的是通過搜尋、疊代、優化,找到最優解的。而本文中采用了利用互相關的方法,可以做到在一定假設的條件下,直接得到x、y平移的數值。

1 互相關用于圖像配準原理介紹

假設圖像 f 2 f_2 f2​是 f 1 f_1 f1​經過平移得到的,那麼

f 2 = f 1 ( x − Δ x , y − Δ y ) f_2 = f_1(x-\Delta x, y-\Delta y) f2​=f1​(x−Δx,y−Δy)

根據傅裡葉變換定理

F 2 ( u , v ) = F 1 ( u , v ) e − 2 π j ( u Δ x + v Δ y ) F_2(u,v)=F_1(u,v)e^{-2\pi j (u\Delta x+v\Delta y)} F2​(u,v)=F1​(u,v)e−2πj(uΔx+vΔy)

根據互相關函數的定義

R c c f ( x , y ) = f 1 ( x , y ) ∗ f 2 ( − x , − y ) R_{c c f}(x,y)=f_1(x,y)*f_2(-x,-y) Rccf​(x,y)=f1​(x,y)∗f2​(−x,−y)

計算傅裡葉變換,可得

R c c f ( u , v ) = F 1 ( u , v ) F 2 ∗ ( u , v ) = F 1 F 1 ∗ e 2 π j ( u Δ x + v Δ y ) = F ( u , v ) e 2 π j ( u Δ x + v Δ y ) R_{c c f}(u,v)=F_1(u,v)F_2^*(u,v)=F_1 F_1^*e^{2\pi j(u\Delta x+v\Delta y)}=F(u,v)e^{2\pi j(u\Delta x+v\Delta y)} Rccf​(u,v)=F1​(u,v)F2∗​(u,v)=F1​F1∗​e2πj(uΔx+vΔy)=F(u,v)e2πj(uΔx+vΔy)

其中, F ( u , v ) = F 1 F 1 ∗ F(u,v)=F_1 F_1^* F(u,v)=F1​F1∗​

将上式求反傅裡葉變換,可得

R c c f ( x , y ) = F ( x , y ) ∗ δ ( x − Δ x , y − Δ y ) = F ( x − Δ x , y − Δ y ) R_{ccf}(x,y)=F(x,y)*\delta(x-\Delta x,y-\Delta y)=F(x-\Delta x,y-\Delta y) Rccf​(x,y)=F(x,y)∗δ(x−Δx,y−Δy)=F(x−Δx,y−Δy)

由自相關函數的性質可知,函數 F ( x , y ) F(x,y) F(x,y)的峰值在原點處,是以 R ( x , y ) R(x,y) R(x,y)的峰值出現在點 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)處,也就是函數 f 2 ( x , y ) f_2(x,y) f2​(x,y)的偏移量。

2 舉例

例子中的圖像來自文章[1], f 1 f_1 f1​和 f 2 f_2 f2​是在不同時刻拍攝到的圖像。兩幅圖像的大小均為 200 ∗ 200 200*200 200∗200。現在需要将其配準,其便于研究其中神經元的活動情況(熒光亮度)。

利用互相關方法校正二維圖像移動
利用互相關方法校正二維圖像移動

左圖是 f 1 f_1 f1​,右圖是 f 2 f_2 f2​

Matlab 代碼如下

clear

tic

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

toc

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

Elapsed time is 0.189088 seconds.

利用校正前和校正後兩幅圖像的內插補點進行檢驗

利用互相關方法校正二維圖像移動

從上面的圖像可以看出,在經過校正後,圖像的相似度提高了。

另外,Matlab官方文檔中的一個例子。它利用互相關來實作尋找最優比對的例子。其實質和圖像校正是一緻的,都是通過計算互相關系數,找到兩幅圖像之間最比對時平移的距離。

有問題,随意提出,共同進步。

[1] Ming Li, Fang Liu, Hongfei Jiang, Tai Sing Lee, Shiming Tang (2017) Long-Term Two-Photon Imaging in Awake Macaque Monkey, Neuron