我想使用巴特沃斯滤波器平滑医学图像,数据非常嘈杂,我想减少这一点。我使用的是Python v3.7。图像数据存储在2D np.array中,我使用scipy将其转换到频域。我不知道应用巴特沃斯过滤器的下一步是什么
#%% 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)我的数据必须是什么格式才能应用巴特沃斯过滤器?以及我应该使用哪些参数。
发布于 2020-03-21 04:11:35
这是我的方法,我不知道它是否为你清除了足够的噪音。我还建议将订单定为4
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)如果您想要高通输出,这将提供低通巴特沃斯:
high=np.array(x)-np.array(y)https://stackoverflow.com/questions/58412102
复制相似问题