版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
梯形低通滤波器
梯形低通滤波器(TLPF)的传递函数如下:
其中, 称为梯形低通滤波器的截止频率。 和 按要求指定 ,它的性能介于理想低通滤波与巴特沃斯低通滤波器之间,对图像具有一定的模糊和振铃效应。
Python语言实现代码如下:
def trapezoidal_low_pass_kernel(img,D0=5,D1=10):
assert img.ndim == 2
r,c = img.shape[1],img.shape[0]
u = np.arange(r)
v = np.arange(c)
u, v = np.meshgrid(u, v)
low_pass = np.sqrt( (u-r/2)**2 + (v-c/2)**2 )
idx = low_pass < D0
idx2 = (low_pass >= D0) & (low_pass <= D1)
idx3 = low_pass > D1
low_pass[idx] = 1
low_pass[idx2] = (low_pass[idx2] - D1) / (D1 - D0)
low_pass[idx3] = 0
return low_pass
def trapezoidal_low_pass_filter(img,D0=5,D1=15):
assert img.ndim == 2
gray = np.float64(img)
kernel = trapezoidal_low_pass_kernel(img,D0,D1)
gray_fft = np.fft.fft2(gray)
gray_fftshift = np.fft.fftshift(gray_fft)
dst = np.zeros_like(gray_fftshift)
dst_filtered = kernel * gray_fftshift
dst_ifftshift = np.fft.ifftshift(dst_filtered)
dst_ifft = np.fft.ifft2(dst_ifftshift)
dst = np.abs(np.real(dst_ifft))
dst = np.clip(dst,0,255)
return np.uint8(dst)
程序运行结果