数字图像处理笔记(九):选择性滤波

1 - 引言

在前面我们讨论了高通和低通滤波器对图像进行处理,它们都是在整个图像的频率矩阵上操作,但是在很多应用中,我们感兴趣是处理指定的频段或频率矩形的小区域,因此需要使用选择性滤波,选择性滤波主要有两类

  1. 带阻滤波器或带通滤波器
  2. 陷波滤波器
    下面就让我们来介绍一下这两种滤波器

2 - 带阻滤波器和带通滤波器

这种类型的滤波器很容易使用前面的概念来构建,前面我们学习了理想、布特沃斯和高斯滤波器,则我们可以通过这些滤波器构建新的带阻滤波器

在这里插入图片描述

带通滤波器则为: H B P ( u , v ) = 1 − H B R ( u , v ) H_{BP}(u,v)=1-H_{BR}(u,v) HBPuv=1HBR(u,v)
下面以图像的形式来展示一个高斯带通滤波器
在这里插入图片描述

这个滤波器本质上与前面的滤波器没有很大的改变,因此不再进行试验分析(详情可见之前的笔记)

3 - 陷波滤波器

陷波滤波器是更有用的选择性滤波器可以有效的去除周期性噪声。陷波滤波器可以用高通滤波器的乘积来构造。一般形式为:
H H R ( u , v ) = ∏ k = 1 Q H k ( u , v ) H − k ( u , v ) H_{HR}(u,v)=\prod_{k=1}^QH_k(u,v)H_{-k}(u,v) HHR(u,v)=k=1QHk(u,v)Hk(u,v)
其中, H k ( u , v ) H_k(u,v) Hk(u,v) H − k ( u , v ) H_{-k}(u,v) Hk(u,v)是高通滤波器。
距离的计算:
D k ( u , v ) = [ ( u − M / 2 − u k ) 2 + ( v − N / 2 − v k ) 2 ] 1 / 2 D_k(u,v)=[(u-M/2-u_k)^2+(v-N/2-v_k)^2]^{1/2} Dk(u,v)=[(uM/2uk)2+(vN/2vk)2]1/2

D − k ( u , v ) = [ ( u − M / 2 + U k ) 2 + ( v − N / 2 + v k ) 2 ] 1 / 2 D_{-k}(u,v)=[(u-M/2+U_k)^2+(v-N/2+v_k)^2]^{1/2} Dk(u,v)=[(uM/2+Uk)2+(vN/2+vk)2]1/2
例如,下面一个用理想低通滤波器,它包含两个陷波对
H N R ( u , v ) = ∏ k = 1 2 [ 1 1 + [ D 0 k / D k ( u , v ) 2 n ] ] [ 1 1 + [ D 0 k / D − k ( u , v ) 2 n ] ] H_{NR}(u,v)=\prod_{k=1}^2[\frac{1}{1+[D_{0k}/D_k(u,v)^{2n}]}][\frac{1}{1+[D_{0k}/D_{-k}(u,v)^{2n}]}] HNR(u,v)=k=12[1+[D0k/Dk(u,v)2n]1][1+[D0k/Dk(u,v)2n]1]
进行莫尔波纹的过滤

import cv2
import numpy as np
import matplotlib.pyplot as plt

#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

img = cv2.imread('images/2.jpg',0) #直接读为灰度图像
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
s1 = np.log(np.abs(fshift))
plt.subplot(221),plt.imshow(img,'gray'),plt.title('原始图像')
plt.subplot(222),plt.imshow(s1,'gray'),plt.title('中心频率域')


w , h = img.shape
"""设计理想陷波滤波器"""
flt = np.zeros(img.shape)
rx1 = w / 4
ry1 = h / 2

rx2 = w*3/4
ry2 = h/2;

r = min(w,h)/6 #半径
for i in range(1,w):
    for j in range(1,h):
        if ((i - rx1)**2 + (j - ry1)**2 >= r**2) and ((i - rx2)**2 + (j - ry2)**2 >= r**2):
            flt[i,j] = 1

plt.subplot(223),plt.imshow(flt,'gray'),plt.title('陷波滤波器')
new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift*flt)))
plt.subplot(224),plt.imshow(new_img,'gray'),plt.title('滤波后图像')

plt.show()

可以看到我们原始图像含有较多的莫尔波纹,我们可以通过构建不同的陷波滤波器对图像进行滤波
在这里插入图片描述

可见大部分的莫尔波纹已经被过滤,但是图片也因为滤波失去信息而变得平滑模糊,这时候我们可以选用不同数量和不同的单个滤波器种类来达到更好的效果。

4 - 小结

到这里,对于滤波器的学习可以做一个小结,我们学习了在空间域、频域的高通、低通滤波器对图像做增强操作,我们在以后的实践中,可以灵活的构建和使用多种滤波器为我们需要识别的图片进行预处理,以达到更好的识别效果。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值