对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声;另一种是微分算子,可以用来检测边缘和特征提取。

skimage库中通过filters模块进行滤波操作。

1、sobel算子

sobel算子可用来检测边缘

函数格式为:skimage.filters.sobel(image, mask=None)

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
edges = filters.sobel(img)
plt.imshow(edges,plt.cm.gray)

2、roberts算子

roberts算子和sobel算子一样,用于检测边缘

调用格式也是一样的:

edges = filters.roberts(img)

3、scharr算子

功能同sobel,调用格式:

edges = filters.scharr(img)

4、prewitt算子

功能同sobel,调用格式:

edges = filters.prewitt(img)

5、canny算子

canny算子也是用于提取边缘特征,但它不是放在filters模块,而是放在feature模块

函数格式:skimage.feature.canny(image,sigma=1.0)

可以修改sigma的值来调整效果

from skimage import data,filters,feature
import matplotlib.pyplot as plt
img = data.camera()
edges1 = feature.canny(img)   #sigma=1
edges2 = feature.canny(img,sigma=3)   #sigma=3

plt.figure('canny',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)plt.show()

从结果可以看出,sigma越小,边缘线条越细小。

6、gabor滤波

gabor滤波可用来进行边缘检测和纹理特征提取。

函数调用格式:skimage.filters.gabor_filter(image, frequency)

通过修改frequency值来调整滤波效果,返回一对边缘结果,一个是用真实滤波核的滤波结果,一个是想象的滤波核的滤波结果。

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
filt_real, filt_imag = filters.gabor_filter(img,frequency=0.6)   plt.figure('gabor',figsize=(8,8))plt.subplot(121)
plt.title('filt_real')
plt.imshow(filt_real,plt.cm.gray)  plt.subplot(122)
plt.title('filt-imag')
plt.imshow(filt_imag,plt.cm.gray)plt.show()

以上为frequency=0.6的结果图。

以上为frequency=0.1的结果图

7、gaussian滤波

多维的滤波器,是一种平滑滤波,可以消除高斯噪声。

调用函数为:skimage.filters.gaussian_filter(image, sigma)

通过调节sigma的值来调整滤波效果

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.astronaut()
edges1 = filters.gaussian_filter(img,sigma=0.4)   #sigma=0.4
edges2 = filters.gaussian_filter(img,sigma=5)   #sigma=5

plt.figure('gaussian',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)plt.show()

可见sigma越大,过滤后的图像越模糊

8.median

中值滤波,一种平滑滤波,可以消除噪声。

需要用skimage.morphology模块来设置滤波器的形状。

from skimage import data,filters
import matplotlib.pyplot as plt
from skimage.morphology import disk
img = data.camera()
edges1 = filters.median(img,disk(5))
edges2= filters.median(img,disk(9))plt.figure('median',figsize=(8,8))plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)plt.show()

从结果可以看出,滤波器越大,图像越模糊。

9、水平、垂直边缘检测

上边所举的例子都是进行全部边缘检测,有些时候我们只需要检测水平边缘,或垂直边缘,就可用下面的方法。

水平边缘检测:sobel_h, prewitt_h, scharr_h

垂直边缘检测: sobel_v, prewitt_v, scharr_v

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
edges1 = filters.sobel_h(img)
edges2 = filters.sobel_v(img) plt.figure('sobel_v_h',figsize=(8,8))plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)plt.show()

上边左图为检测出的水平边缘,右图为检测出的垂直边缘。

10、交叉边缘检测

可使用Roberts的十字交叉核来进行过滤,以达到检测交叉边缘的目的。这些交叉边缘实际上是梯度在某个方向上的一个分量。

其中一个核:

 0   1
-1   0

对应的函数:

roberts_neg_diag(image)

例:

from skimage import data,filters
import matplotlib.pyplot as plt
img =data.camera()
dst =filters.roberts_neg_diag(img) plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

另外一个核:

1   0
0  -1

对应函数为:

roberts_pos_diag(image)

from skimage import data,filters
import matplotlib.pyplot as plt
img =data.camera()
dst =filters.roberts_pos_diag(img) plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

python数字图像处理(10):图像简单滤波相关推荐

  1. 第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

    目录 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 高斯低通滤波器(GLPF) 巴特沃斯低通滤波器 低通滤波的例子 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心 ...

  2. 第4章 Python 数字图像处理(DIP) - 频率域滤波1 - 傅里叶级数和变换简史

    本章主要讲解频域域滤波的技术,主要技术用到是大家熟悉的傅里叶变换与傅里叶反变换.这里有比较多的篇幅讲解的傅里叶的推导进程,用到Numpy傅里叶变换.本章理论基础比较多,需要更多的耐心来阅读,有发现有错 ...

  3. 第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像

    目录 使用高通滤波器锐化图像 由低通滤波器得到理想.高斯和巴特沃斯高通滤波器 指纹增强 频域中的拉普拉斯 钝化掩蔽.高提升滤波和高频强调滤波 同态滤波 使用高通滤波器锐化图像 由低通滤波器得到理想.高 ...

  4. 第4章 Python 数字图像处理(DIP) - 频率域滤波5 - 二变量函数的傅里叶变换、图像中的混叠、二维离散傅里叶变换及其反变换

    目录 二变量函数的傅里叶变换 二维冲激及其取样性质 二维连续傅里叶变换对 二维取样和二维取样定理 图像中的混叠 二维离散傅里叶变换及其反变换 二变量函数的傅里叶变换 二维冲激及其取样性质 两个连续变量 ...

  5. python数字图像处理(四) 频率域滤波

    import matplotlib.pyplot as plt import numpy as np import cv2 %matplotlib inline 首先读入这次需要使用的图像 img = ...

  6. 第4章 Python 数字图像处理(DIP) - 频率域滤波12 - 选择性滤波 - 带阻

    目录 选择性滤波 带阻滤波器和带通滤波器 陷波滤波器 选择性滤波 处理特定的频带的滤波器称为频带滤波器 带阻滤波器: 若某个频带中的频率被滤除 带通滤波器: 若某个频带中的频率被通过 处理小频率矩形区 ...

  7. 第4章 Python 数字图像处理(DIP) - 频率域滤波8 - 二维DFT和IDFT的一些性质 - 二维离散卷积定理

    目录 二维DFT和IDFT的一些性质 二维离散卷积定理 二维离散傅里叶变换性质的小结 二维DFT和IDFT的一些性质 二维离散卷积定理 二维循环卷积表达式: (f⋆h)(x,y)=∑m=0M−1∑n= ...

  8. 第4章 Python 数字图像处理(DIP) - 频率域滤波7 - 二维DFT和IDFT的一些性质 - 傅里叶频谱和相角

    目录 二维DFT和IDFT的一些性质 傅里叶频谱和相角 二维DFT和IDFT的一些性质 傅里叶频谱和相角 F(u,v)=R(u,v)+jI(u,v)=∣F(u,v)∣ejϕ(u,v)(4.86)F(u ...

  9. 第4章 Python 数字图像处理(DIP) - 频率域滤波3 - 取样和取样函数的傅里叶变换、混叠

    目录 取样和取样函数的傅里叶变换 取样 取样后的函数的傅里叶变换 取样定理 混叠 由取样后的数据重建(复原)函数 取样和取样函数的傅里叶变换 取样 fˉ(t)=f(t)sΔT(t)=∑n=−∞∞f(t ...

  10. 第4章 Python 数字图像处理(DIP) - 频率域滤波6 - 二维DFT和IDFT的一些性质 - 平移和旋转、周期性、对称性

    目录 二维DFT和IDFT的一些性质 空间间隔和频率间隔的关系 平移和旋转 周期性 对称性 二维DFT和IDFT的一些性质 空间间隔和频率间隔的关系 Δu=1MΔT(4.69)\Delta u = \ ...

最新文章

  1. Python实现“鸟脸识别”,看看什么鸟最贪吃
  2. 《经济学人》也谈 Python:它会是我们的未来吗?
  3. pandas(三) -- DataFrame的基本操作
  4. java的imshow方法_如何在循环中使用子图,imshow或图形来显示所有图像?
  5. SAP S/4HANA: 一条代码线,许多种选择
  6. oracle sys可以登录,system权限不足,解决方法
  7. Web框架——Flask系列之蓝图Blueprint(二十一)
  8. LeetCode 291. 单词规律 II(回溯)
  9. Java类类getDeclaredMethod()方法及示例
  10. Linux系统实现ICMP ping功能,并计算时延
  11. 算法:Search in Rotated Sorted Array(搜索部分顺序被翻转的数组)
  12. 江苏大学毕业论文答辩PPT模板
  13. vite中antdesign-vue3的使用
  14. 电脑屏幕莫名其妙变成绿色
  15. Ubuntu18.04下 LOAM_Velodyne 的编译安装(PCL为1.8.1)
  16. 远程主机强迫关闭一个现有连接-=-解决办法
  17. 云原生yaml部署harbor
  18. android 系统自带的软件可以删除列表--Defy
  19. 【高等数学】-积分再现公式
  20. 立法保障交通权 日本交通政策基本法是如何制定的?

热门文章

  1. .net通用CMS快速开发框架——问题:Dapper通用的多表联合分页查询怎么破?
  2. 对网页渲染的初步认识
  3. 网管开始往ITSM迁移(第二季)
  4. man exportfs(exportfs命令中文手册)
  5. ListView 复用学习
  6. 机器学习的几个误区-转载
  7. 举例说明在SQL中,DELETE语句与DROP TABLE的区别
  8. 在肉鸡上构建一个完美的虚拟主机
  9. Solaris 10的第二次更新要点
  10. NOIP Day -151