IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV学习笔记(五)——图像平滑处理(滤波) -> 正文阅读

[人工智能]OpenCV学习笔记(五)——图像平滑处理(滤波)

在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声,这一过程称为对图像的平滑处理,所得的图像称为平滑图像。

《OpenCV轻松入门:面向Python》学习笔记(五)

1. 均值滤波

均值滤波是指用当前像素点周围N·N个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,即可完成整幅图像的均值滤波。

dst = cv2.blur( src, ksize [,anchor] [,borderType])

  • dst 是返回值,表示进行均值滤波后得到的处理结果。
  • src 是需要处理的图像,即原始图像。它可以有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • ksize 是滤波核的大小。滤波核大小是指在均值处理过程中,其邻域图像的高度和宽度。例如,其值可以为(5, 5),表示以5×5大小的邻域均值作为图像均值滤波处理的结果。
  • anchor 是锚点,其默认值是(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
  • borderType 是边界样式,该值决定了以何种方式处理边界,其值如表7-1 所示。一般情况下不需要考虑该值的取值,直接采用默认值即可。

在这里插入图片描述

2. 方框滤波

在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。

dst = cv2.boxFilter( src, ddepth, ksize [,anchor] [,normalize] [,borderType])

  • dst 是返回值,表示进行方框滤波后得到的处理结果。
  • src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • ddepth 是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度。
  • ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高度和宽度。例如,滤波核的值可以为(3,3),表示以3×3大小的邻域均值或总和作为图像滤波处理的结果。
  • anchor 是锚点,其默认值是(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
  • normalize 表示在滤波时是否进行归一化(这里指将计算结果规范化为当前像素值范围内的值(处理,该参数是一个逻辑值,可能为真(值为1)或假(值为0),默认为1。1.当参数 normalize=1 时,表示要进行归一化处理,要用邻域像素值的和除以面积;2.当参数 normalize=0 时,表示不需要进行归一化处理,直接使用邻域像素值的和。
  • borderType 是边界样式,该值决定了以何种方式处理边界,采用默认值即可

3. 高斯滤波

在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。

dst = cv2.GaussianBlur( src, ksize, sigmaX, sigmaY, borderType )

  • dst 是返回值,表示进行高斯滤波后得到的处理结果。
  • src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,滤波核的值必须是奇数
  • sigmaX 是卷积核在水平方向上(X 轴方向)的标准差,其控制的是权重比例。例如,图中是不同的sigmaX决定的卷积核,它们在水平方向上的标准差不同。
  • sigmaY 是卷积核在垂直方向上(Y 轴方向)的标准差。如果将该值设置为0,则只采用sigmaX 的值;如果sigmaX 和sigmaY 都是0,则通过ksize.width 和ksize.height 计算得到。
  • borderType 是边界样式,该值决定了以何种方式处理边界,采用默认值即可。

在实际处理中,可以显式指定sigmaX 和sigmaY 为默认值0。因此,函数cv2.GaussianBlur()的常用形式为:
dst = cv2.GaussianBlur( src, ksize, 0, 0 )

4. 中值滤波

中值滤波与前面介绍的滤波方式不同,不再采用加权求均值的方式计算滤波结果。它用邻域内所有像素值的中间值来替代当前像素点的像素值。

dst = cv2.medianBlur( src, ksize)

  • dst 是返回值,表示进行中值滤波后得到的处理结果。
  • src 是需要处理的图像,即源图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,核大小必须是比1 大的奇数,比如3、5、7 等。

由于没有进行均值处理,中值滤波不存在均值滤波等滤波方式带来的细节模糊问题。在中值滤波处理中,噪声成分很难被选上,所以可以在几乎不影响原有图像的情况下去除全部噪声。但是由于需要进行排序等操作,中值滤波需要的运算量较大

5. 双边滤波

双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像内的边缘信息,但去除噪声的效果并不好

在双边滤波中,当处在边缘时,与当前点色彩相近的像素点(颜色距离很近)会被给予较大的权重值;而与当前色彩差别较大的像素点(颜色距离很远)会被给予较小的权重值(极端情况下权重可能为0,直接忽略该点),这样就保护了边缘信息。

dst = cv2.bilateralFilter( src, d, sigmaColor, sigmaSpace [,borderType])

  • dst 是返回值,表示进行双边滤波后得到的处理结果。
  • src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • d 是在滤波时选取的空间距离参数,这里表示以当前像素点为中心点的直径。如果该值为非正数,则会自动从参数sigmaSpace 计算得到。如果滤波空间较大(d>5),则速度较慢。因此,在实时应用中,推荐d=5。对于较大噪声的离线滤波,可以选择d=9。
  • sigmaColor 是滤波处理时选取的颜色差值范围,该值决定了周围哪些像素点能够参与到滤波中来。与当前像素点的像素值差值小于sigmaColor的像素点,能够参与到当前的滤波中。该值越大,就说明周围有越多的像素点可以参与到运算中。该值为0时,滤波失去意义;该值为255 时,指定直径内的所有点都能够参与运算。
  • sigmaSpace 是坐标空间中的sigma 值。它的值越大,说明有越多的点能够参与到滤波计算中来。当d>0 时,无论sigmaSpace 的值如何,d都指定邻域大小;否则,d与sigmaSpace的值成比例。
  • borderType 是边界样式,该值决定了以何种方式处理边界。一般情况下,直接采用默认值即可

为了简单起见,可以将两个sigma(sigmaColor 和sigmaSpace)值设置为相同的。如果它们的值比较小(例如小于10),滤波的效果将不太明显;如果它们的值较大(例如大于150),则滤波效果会比较明显,会产生卡通效果

6. 2D卷积

使用自定义卷积核实现卷积操作。

dst = cv2.filter2D( src, ddepth, kernel [,anchor] [,delta] [,borderType] )

  • dst 是返回值,表示进行方框滤波后得到的处理结果。
  • src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F 中的一种。
  • ddepth 是处理结果图像的图像深度,一般使用-1 表示与原始图像使用相同的图像深度。
  • kernel 是卷积核,是一个单通道的数组(归一化)。如果想在处理彩色图像时,让每个通道使用不同的核,则必须将彩色图像分解后使用不同的核完成操作。
  • anchor 是锚点,其默认值是(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
  • delta 是修正值,它是可选项。如果该值存在,会在基础滤波的结果上加上该值作为最终的滤波处理结果。
  • borderType 是边界样式,该值决定了以何种情况处理边界,通常使用默认值即可
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:42:25  更:2021-12-01 17:42:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:29:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码