我有一个带有成像工件的数据图像,它是一个正弦背景,我想删除它.由于它是一个单频正弦波,傅立叶变换和带通滤波器或"陷波滤波器"(我认为我在+ -omega处使用高斯滤波器)似乎很自然.
在尝试这样做时,我注意到两件事:
1)只需执行fft和back,我就减少了正弦波分量,如下所示.似乎只是通过去那里和回来对数据进行一些高通滤波?
import numpy as np
f = np.fft.fft2(img) #do the fourier transform
fshift1 = np.fft.fftshift(f) #shift the zero to the center
f_ishift = np.fft.ifftshift(fshift1) #inverse shift
img_back = np.fft.ifft2(f_ishift) #inverse fourier transform
img_back = np.abs(img_back)
Run Code Online (Sandbox Code Playgroud)
这是img_back的图片:
也许这里的过滤对我来说已经足够了,但我对它没有那么自信,因为我对背景抑制没有很好的理解.
2)为了更加确定在不需要的频率上的抑制,我制作了一个布尔'带通'掩码并将其应用于数据,但傅里叶变换忽略了掩码.
a = shape(fshift1)[0]
b = shape(fshift1)[1]
ro = 8
ri = 5
y,x = np.ogrid[-a/2:a/2, -b/2:b/2]
m1 = x*x + y*y >= ro*ro
m2 = x*x + y*y <= ri*ri
m3=np.dstack((m1,m2))
maskcomb =[]
for r in m3:
maskcomb.append([any(c) for …Run Code Online (Sandbox Code Playgroud)