2010-05-05 60 views
1

一個涉及圖像處理的項目,也就是計算當被一定折射率的介質偏移時相同圖像的角度偏移。我們必須構建一個應用程序,將2張圖像(phase/2D correlation?)相關聯,然後使用Chaco和Mayavi(Python中的2個庫)進行繪圖。 是否有任何其他現有模板軟件(FOSS)可以基於我們的應用程序,或將其用作參考?是否有可用於Python的圖像相位相關庫?

回答

0

Scipy在其包含scipy.ndimage包中包含許多圖像處理例程。使用

2

SciPy的,這應該是一個班輪(儘管你可能避免ndimage包)

from scipy.fftpack import fftn, ifftn 
corr = (ifftn(fftn(a)*ifftn(b))).real 

假設你已經成功地讀取原始圖像到numpy的數組a &灣如果是2D圖像mayavi可能有點矯枉過正,並且使用matplotlib可能比chaco更容易。如果使用matplotlib,你可以通過http://en.wikipedia.org/wiki/Phase_correlation描述,從https://github.com/michaelting/Phase_Correlation/blob/master/phase_corr.py採取做一大堆與

from pylab import * 
corr = (ifftn(fftn(a)*ifftn(b))).real 
imshow(corr) 
0

階段相關。

def phase_correlation(a, b): 
    G_a = np.fft.fft2(a) 
    G_b = np.fft.fft2(b) 
    conj_b = np.ma.conjugate(G_b) 
    R = G_a*conj_b 
    R /= np.absolute(R) 
    r = np.fft.ifft2(R).real 
    return r 

下面是一個例子:我們採取兩個相似的圖像,但不同的相位和繪製相位相關(與在適當的相位差的一塊白點黑圖像)。

from scipy import misc 
from matplotlib import pyplot 
import numpy as np 
#Get two images with different phases 
im1 = misc.lena() 
im2 = np.zeros_like(im1) 
im2[:200,:200] = im1[-200:, -200:] 
pyplot.imshow(phase_correlation(im1, im2), cmap='gray') 
pyplot.show() 
+0

只是一些實際的建議,記得先對輸入圖像應用適當的窗口。看到二維海明或高斯窗口http://stackoverflow.com/questions/7687679/how-to-generate-2d-gaussian-with-python。 – 2014-11-03 09:38:22