18 lines
597 B
Python
18 lines
597 B
Python
import numpy as np
|
|
import scipy.fftpack as fftpack
|
|
|
|
|
|
# Temporal bandpass filter with Fast-Fourier Transform
|
|
def fft_filter(video, freq_min, freq_max, fps):
|
|
fft = fftpack.fft(video, axis=0)
|
|
frequencies = fftpack.fftfreq(video.shape[0], d=1.0 / fps)
|
|
bound_low = (np.abs(frequencies - freq_min)).argmin()
|
|
bound_high = (np.abs(frequencies - freq_max)).argmin()
|
|
fft[:bound_low] = 0
|
|
fft[bound_high:-bound_high] = 0
|
|
fft[-bound_low:] = 0
|
|
iff = fftpack.ifft(fft, axis=0)
|
|
result = np.abs(iff)
|
|
result *= 100 # Amplification factor
|
|
|
|
return result, fft, frequencies |