【问题标题】:Is there an image phase correlation library available for Python? [closed]是否有可用于 Python 的图像相位相关库? [关闭]
【发布时间】:2011-02-15 19:03:35
【问题描述】:

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

【问题讨论】:

    标签: python image-processing project correlation


    【解决方案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 snippet at different locations
    im1 = np.mean(misc.face(), axis=-1) #naive colour flattening  
    
    im2 = np.zeros_like(im1)    
    im2[:200,:200] = im1[200:400, 500:700]
    
    corrimg = phase_correlation(im1, im2)
    r,c = np.unravel_index(corrimg.argmax(), corrimg.shape)
    
    pyplot.imshow(im1)
    pyplot.plot([c],[r],'ro')
    pyplot.show()
    
    pyplot.imshow(im2)
    pyplot.show()
    
    pyplot.figure(figsize=[8,8])
    pyplot.imshow(corrimg, cmap='gray')
    
    pyplot.show()
    

    【讨论】:

    【解决方案2】:

    使用 scipy 这应该是单行的(尽管您可能可以避免使用 ndimage 包)

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

    假设您已设法将原始图像读入 numpy 数组 a 和 b。如果是 2D 图像,mayavi 可能有点矫枉过正,使用 matplotlib 可能比使用 chaco 更容易。如果使用 matplotlib,你可以做很多事情

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 2019-04-12
        • 2021-07-27
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多