是否有可用于Python的图像相位相关库?
一种涉及图像处理的项目,即计算同一图像在被具有一定折射率的介质移动时的角位移。我们必须构建一个应用程序来关联这两幅图像(相位/2D关联?),然后使用Chaco和Mayavi(Python中的两个库)进行绘图。是否有可用于Python的图像相位相关库?,python,image-processing,project,correlation,Python,Image Processing,Project,Correlation,一种涉及图像处理的项目,即计算同一图像在被具有一定折射率的介质移动时的角位移。我们必须构建一个应用程序来关联这两幅图像(相位/2D关联?),然后使用Chaco和Mayavi(Python中的两个库)进行绘图。 是否有其他现有的模板软件(FOSS)可以作为我们应用程序的基础或参考?Scipy在其软件包中包含许多图像处理例程。使用Scipy这应该是一个单行程序(尽管您可能可以避免ndimage软件包) 假设您已将原始图像读入numpy阵列a和b。如果是2D图像,那么mayavi可能有点过分了,使用m
是否有其他现有的模板软件(FOSS)可以作为我们应用程序的基础或参考?Scipy在其软件包中包含许多图像处理例程。使用Scipy这应该是一个单行程序(尽管您可能可以避免ndimage软件包) 假设您已将原始图像读入numpy阵列a和b。如果是2D图像,那么mayavi可能有点过分了,使用matplotlib可能比chaco更容易。如果使用matplotlib,您可以使用
from pylab import *
corr = (ifftn(fftn(a)*ifftn(b))).real
imshow(corr)
相位相关性如所述,取自 下面是一个例子:我们取两张相似但相位不同的图像,绘制相位相关性图(一张黑色图像,在适当的相位差处有一个白点)
只是一些实用的建议,请记住首先对输入图像应用适当的窗口。请参见二维汉明或高斯窗口。
from pylab import *
corr = (ifftn(fftn(a)*ifftn(b))).real
imshow(corr)
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()