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

0 python project image-processing correlation

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

Sim*_*her 5

相位相关性如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
Run Code Online (Sandbox Code Playgroud)

这是一个例子:我们拍摄两个相似但相位不同的图像并绘制相位相关性(黑色图像,在适当的相位差处有一个白点)。

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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 只是一些实用的建议,请记住首先对输入图像应用适当的窗口。请参阅 2D Hamming 或高斯窗口 http://stackoverflow.com/questions/7687679/how-to-generate-2d-gaussian-with-python。 (2认同)