首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python在医学图像的2D np.array上实现巴特沃斯滤波器

如何使用python在医学图像的2D np.array上实现巴特沃斯滤波器
EN

Stack Overflow用户
提问于 2019-10-16 19:21:14
回答 1查看 2.4K关注 0票数 0

我想使用巴特沃斯滤波器平滑医学图像,数据非常嘈杂,我想减少这一点。我使用的是Python v3.7。图像数据存储在2D np.array中,我使用scipy将其转换到频域。我不知道应用巴特沃斯过滤器的下一步是什么

代码语言:javascript
复制
#%% butterworth filter
import scipy.fftpack
import scipy.signal
normal_scan=scan_spect # I have already loaded and preprocessed the data 
freq_scan=scipy.fftpack.fft2(normal_scan)

N=10 #order/power of the filter

Wn=0.6 #critical frequency

B, A=scipy.signal.butter(10,0.6, output='ba' )

smoothed_data=scipy.signal.filtfilt(B, A, freq_scan)

我的数据必须是什么格式才能应用巴特沃斯过滤器?以及我应该使用哪些参数。

EN

回答 1

Stack Overflow用户

发布于 2020-03-21 04:11:35

这是我的方法,我不知道它是否为你清除了足够的噪音。我还建议将订单定为4

代码语言:javascript
复制
def butterLow(cutoff, critical, order):
    normal_cutoff = float(cutoff) / critical
    b, a = signal.butter(order, normal_cutoff, btype='lowpass')
    return b, a

def butterFilter(data, cutoff_freq, nyq_freq, order):
    b, a = butterLow(cutoff_freq, nyq_freq, order)
    y = signal.filtfilt(b, a, data)
    return y

x=np.array(freq_scan)
cutoff_frequency = some value
sample_rate = maximum value in your array *2 +1

y = butterFilter(x, cutoff_frequency, sample_rate/2)

如果您想要高通输出,这将提供低通巴特沃斯:

代码语言:javascript
复制
high=np.array(x)-np.array(y)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58412102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档