小编Cla*_*mas的帖子

python:图像的带通滤波器

我有一个带有成像工件的数据图像,它是一个正弦背景,我想删除它.由于它是一个单频正弦波,傅立叶变换和带通滤波器或"陷波滤波器"(我认为我在+ -omega处使用高斯滤波器)似乎很自然.

我的数据. 红点是我想要的,kx + ky中的背景正弦波是不需要的.

在尝试这样做时,我注意到两件事:

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)

python numpy image-processing filter convolution

18
推荐指数
1
解决办法
4617
查看次数

标签 统计

convolution ×1

filter ×1

image-processing ×1

numpy ×1

python ×1