2010-05-05 5 views
1

Проект, который включает в себя обработку изображения, то есть для вычисления углового сдвига того же изображения при смещении среды с определенным показателем преломления. Мы должны создать приложение, которое сопоставляет 2 изображения (фазовая/двумерная корреляция?), А затем график с использованием Chaco и Mayavi (2 библиотеки на Python). Есть ли еще существующее существующее программное обеспечение (FOSS), на которое мы можем основать наше приложение, или использовать его в качестве ссылки?Есть ли библиотека корреляции фаз изображения, доступная для Python?

ответ

0

Scipy содержит множество процедур обработки изображений в своем пакете scipy.ndimage.

2

с помощью SciPy это должно быть один вкладыш (хотя, вероятно, можно избежать пакет ndimage)

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

предполагая, что вы сумели прочитать исходные изображения в Numpy массивы & б. Если это 2D-изображения, майави может немного переборщить, и, вероятно, будет проще использовать matplotlib, чем chaco. При использовании Matplotlib, вы могли бы сделать всю партию с

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

фазовой корреляции, как описано http://en.wikipedia.org/wiki/Phase_correlation, взятый из https://github.com/michaelting/Phase_Correlation/blob/master/phase_corr.py.

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

Только некоторые практические советы, не забудьте сначала применить соответствующие окна к входным изображениям. См. Раздел 2D Хэмминг или гауссовые окна http://stackoverflow.com/questions/7687679/how-to-generate-2d-gaussian-with-python. –

Смежные вопросы