Image 构建时空滤波器
我想为我的图像实现一个时空过滤器,这是一组行走循环的轮廓。因此,我将所有图像收集到一个数组中,并将3D数组与我下面提到的时空内核进行卷积。Image 构建时空滤波器,image,filter,processing,fft,convolution,Image,Filter,Processing,Fft,Convolution,我想为我的图像实现一个时空过滤器,这是一组行走循环的轮廓。因此,我将所有图像收集到一个数组中,并将3D数组与我下面提到的时空内核进行卷积。 但是我的结果不正确。这是我的密码,请告诉我我的错误是什么 import cv2,numpy as np import matplotlib.pyplot as plt import glob from PIL import Image from scipy import ndimage def gkern(l,sig): """\ cr
但是我的结果不正确。这是我的密码,请告诉我我的错误是什么
import cv2,numpy as np
import matplotlib.pyplot as plt
import glob
from PIL import Image
from scipy import ndimage
def gkern(l,sig):
"""\
creates gaussian kernel with side length l and a sigma of sig
"""
ax = np.linspace(-(l - 1) / 2., (l - 1) / 2., l)
xx, yy = np.meshgrid(ax, ax)
kernel = np.exp(-0.5 * (np.square(xx) + np.square(yy)) / np.square(sig))
return kernel / np.sum(kernel)
t = np.linspace(0,20,23)
h1 = np.array(gkern(5,5))[None,:,:]
h2= np.array(np.sinc(t-2))[:,None,None]
img_array=[]
for filename in glob.glob('t/*.bmp'):
img = np.array(Image.open(filename).convert('I;16'))
img_array.append(img)
v = np.array(img_array)
def fft(array):
fft = np.fft.ifftshift(np.fft.fftn(np.fft.fftshift(array)))
return fft
def ifft(array):
ifft = np.fft.fftshift(np.fft.ifftn(np.fft.ifftshift(array)))
return ifft
def conv_3D(array, kernel):
conv = np.abs(ifft(fft(array)*fft(kernel)))
return conv
st_kernel = conv_3D(h1, h2)
f_kernel = ndimage.convolve(v,st_kernel)
plt.figure(0)
plt.imshow(f[0,:,:],cmap='gray')