是否有适用于Python的图像相位相关库?

时间:2010-05-05 06:24:52

标签: python image-processing project correlation

涉及图像处理的项目,即,当通过某个折射率的介质移动时计算相同图像的角度偏移。我们必须构建一个应用程序来关联2个图像(相位/ 2D相关?),然后使用Chaco和Mayavi(Python中的2个库)进行绘图。 是否有其他现有的模板软件(FOSS),我们可以将我们的应用程序作为参考,或者将其用作参考?

3 个答案:

答案 0 :(得分:2)

使用scipy这应该是一个单行(虽然你可以避免使用ndimage包)

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

假设您已设法将原始图像读入numpy数组a&湾如果它是2D图像mayavi可能有点矫枉过正,并且它可能比使用chaco更容易使用matplotlib。如果使用matplotlib,您可以使用

完成所有操作
from pylab import *
corr = (ifftn(fftn(a)*ifftn(b))).real
imshow(corr)

答案 1 :(得分:1)

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()

答案 2 :(得分:0)

Scipy在其scipy.ndimage包中包含许多图像处理例程。