返回顶部
首页 > 资讯 > 后端开发 > Python >PythonOpenCV之常用滤波器使用详解
  • 396
分享到

PythonOpenCV之常用滤波器使用详解

2024-04-02 19:04:59 396人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 滤波器1.1 什么是滤波器1.2 关于滤波核1.3 素材选择2.均值滤波器 cv2.blur()2.1 语法简介2.2 代码示例3. 中值滤波器 cv2.medianBlu

1. 滤波器

1.1 什么是滤波器

滤波器是对图像做平滑处理 的一种常用工具

平滑处理即在尽可能地保留原图像信息的情况下,对像素值进行微调,使邻近的像素值之间,值的大小趋于“平滑”,以去除图像内的噪声、降低细节层次信息等的一系列的操作过程。本篇blog将为大家展示OpenCV中的均值滤波器 、中值滤波器 、高斯滤波器 和 双边滤波器。

滤波器的算法逻辑为,指定一个滤波核的大小(该大小表示参与计算的像素数据的范围),以图像中的每一个像素都作为波的核心,通过该范围内的数据,以一定的计算方式进行计算,将计算结果该值赋值给该像素。

1.2 关于滤波核

以大小为n×n的滤波核为例,对于每一个像素数据,我们可以在数组中得到以一个像素为中心的n×n的矩阵,此即参与计算的数据的范围(边界)。这样的矩阵结构即被称为滤波核。

1.3 素材选择

使用图像《龙门石窟》(longmen.jpg) shape:(350, 600, 3)

2.均值滤波器 cv2.blur()

2.1 语法简介

均值滤波器,也称低通滤波器

顾名思义,均值滤波器即对滤波核内的数据求均值,然后将这个值赋值给矩阵核心位置。

均值滤波器可以使用cv2.blur() 方法实现

cv2.blur()的语法:

dst = blur(src, ksize, dst=None, anchor=None, borderType=None)

其中

  • scr 即图像
  • ksize 滤波核大小。使用一个元组表示,形如(a, b),a表示height(高度),b表示width(宽度)。
  • anchor 波核锚点
  • borderType 边界类型

下边以3×3,5×5,10×10三种滤波核为例,分别展示图像经过均值滤波器处理后的效果。

2.2 代码示例

2.2.1 3×3 滤波核为例

import cv2
img = cv2.imread("longmen.jpg")
dst1 = cv2.blur(img, (3, 3))
cv2.imshow("3*3", dst1)
cv2.waiTKEy()
cv2.destroyAllwindows()

滤波效果如下:

2.2.2 5×5 滤波核为例

import cv2
img = cv2.imread("longmen.jpg")
dst2 = cv2.blur(img, (5, 5))
cv2.imshow("5*5", dst2)
cv2.waitKey()
cv2.destroyAllWindows()

滤波效果如下:

2.2.3 10×10滤波核为例

import cv2
img = cv2.imread("longmen.jpg")
dst3 = cv2.blur(img, (10, 10))
cv2.imshow("10*10", dst3)
cv2.waitKey()
cv2.destroyAllWindows()

可以看出,滤波核大小越大,图像越趋于模糊。

3. 中值滤波器 cv2.medianBlur()

中值滤波器,即对滤波核内所有数据排序,将中间值赋值给滤波核核心位置的数字。

medianBlur(src, ksize, dst=None)

其中 ksize必须是奇数,是偶数的话会发生报错。

不同于均值滤波器的方法,cv2.blur(),cv2.blur()的ksize参数是一个元组,而cv2.blur()的ksize参数是一个数值。

代码示例

import cv2
img = cv2.imread("longmen.jpg")
dst1 = cv2.medianBlur(img, 3)
cv2.imshow("3*3", dst1)
cv2.waitKey()
cv2.destroyAllWindows()

滤波后效果如下:

4. 高斯滤波器 cv2.GaussianBlur()

高斯滤波器也被称为高斯模糊 或 高斯平滑 。

高斯滤波器可以在降低图片噪声、细节层次的同时保留更多的图像信息,使经过处理的图像呈现出“磨砂玻璃”的滤镜效果。

使用均值滤波时,每个像素都是均等权重的。使用高斯滤波器求的是不同权重下的均值,越靠近核心的像素的权重越大,约靠近边缘的像素的权重则越小。

与滤波核对应的由每个数据权重组成的矩阵结构,是一个卷积核。卷积核中所有权重值的和为1。卷积核中的数值会随着核的大小而变化。

OpenCV使用cv2.GaussianBlur()方法实现高斯滤波器。其语法如下:

GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

其中

  • src 为目标图像
  • ksize 是滤波核大小,宽高必须是奇数 。格式为是元组形式。

修改sigmaX 和 sigmaY都会改变卷积核中的权重值。这里涉及卷积方面的知识。

borderType 是边界类型。

以9×9的滤波核为例

import cv2
img = cv2.imread("longmen.jpg")
dst1 = cv2.GaussianBlur(img, (9, 9), 0, 0)
cv2.imshow("9*9", dst1)
cv2.waitKey()
cv2.destroyAllWindows()

滤波后效果如下:

5. 双边滤波器 cv2.bilateralFilter()

前三种滤波方式都会使图像变得平滑的同时,边缘区域变得模糊不清。

双边滤波是可以在滤波过程中起到保护图像边界信息作用的滤波操作方法。

其逻辑为:

如果图像在边缘区域,则加大边缘像素的权重,尽可能地让边缘区域的像素值保持不变。如果不在边缘区域(在平坦区域),则使用类似高斯滤波器的算法进行。

双边滤波器的语法为:

bilateralFilter(src, d, sigMacolor, sigmaSpace, dst=None, borderType=None)

scr 即目标图像

d过滤期间使用的每个像素邻域的直径。如果为非正,则根据sigmaSpace计算。即如果为15,则表示15×15的滤波核。

sigmaColor参与计算的颜色的范围,只有像素小于这个值时,以其为核心的滤波核才参与滤波计算。否则不参与。当sigmaColor值为255时,表示所有像素值为核心的滤波核都会参与。

sigmaSpace坐标空间的σ \sigmaσ值,σ \sigmaσ越大,参与计算的像素数量就越多。

borderType边界的样式。

还以图片"longmen.jpg"为例,

选择20×20的滤波核,

参与计算的像素值范围为:小于125的像素值;

坐标空间的σ \sigmaσ值为,200

import cv2
img = cv2.imread("longmen.jpg")
# 双边滤波,选取范围直径为15,颜色范围为125
dst = cv2.bilateralFilter(img, 15, 125, 200)
cv2.imshow("bilateral", dst)
cv2.waitKey()
cv2.destroyAllWindows()

双边滤波效果如下:

可以看出,相比以上滤波效果,双边滤波保留了较清晰的图像边缘信息。

到此这篇关于python OpenCV之常用滤波器使用详解的文章就介绍到这了,更多相关Python OpenCV滤波器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PythonOpenCV之常用滤波器使用详解

本文链接: https://lsjlt.com/news/117225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PythonOpenCV之常用滤波器使用详解
    目录1. 滤波器1.1 什么是滤波器1.2 关于滤波核1.3 素材选择2.均值滤波器 cv2.blur()2.1 语法简介2.2 代码示例3. 中值滤波器 cv2.medianBlu...
    99+
    2024-04-02
  • PythonOpenCV学习之图像滤波详解
    目录背景一、卷积相关概念二、卷积实战三、均值滤波四、高斯滤波五、中值滤波六、双边滤波七、Sobel算子八、Scharr算子九、拉普拉斯算子十、Canny算法背景 图像滤波的作用简单来...
    99+
    2024-04-02
  • PythonOpenCV图像处理之图像滤波特效详解
    目录1 分类2 邻域滤波2.1 线性滤波2.2 非线性滤波3 频域滤波3.1 低通滤波3.2 高通滤波1 分类 图像滤波按图像域可分为两种类型: 邻域滤波(Spatial Domai...
    99+
    2024-04-02
  • Django零基础入门之常用过滤器详解
    引言: 前面讲过了Django中使用模板变量。使用很简单,那么有没有什么关于模板变量的骚操作呢? 答案是肯定有的,这就是本文要讲的——过滤器! 1.过滤器 (1)纯干货讲解: 作用:...
    99+
    2024-04-02
  • 详解Tomcat常用的过滤器
    目录一、跨域过滤器CorsFilter1.1、配置示例1.2、参数说明二、CSRF保护过滤器CsrfPreventionFilter2.1、配置示例2.2、参数说明三、防止参数丢失过...
    99+
    2024-04-02
  • matlab如何调用滤波器
    在MATLAB中,可以使用filter函数来调用滤波器。filter函数的语法如下:y = filter(b, a, x)其中,b是...
    99+
    2023-10-08
    matlab
  • OpenCV(图像处理)-基于python-滤波器(低通、高通滤波器的使用方法)
    1.概念介绍2. 图像卷积filter2D() 3. 低通滤波器3.1 方盒滤波和均值滤波boxFilter()blur() 3.2 高斯滤波(高斯噪音)3.3 中值滤波(胡椒...
    99+
    2023-09-06
    opencv 图像处理 计算机视觉
  • python数字图像处理之高级滤波代码详解
    本文提供许多的滤波方法,这些方法放在filters.rank子模块内。 这些方法需要用户自己设定滤波器的形状和大小,因此需要导入morphology模块来设定。 1、autolevel 这个词在photos...
    99+
    2022-06-04
    图像处理 详解 高级
  • OpenCV学习之图像加噪与滤波的实现详解
    目录一、实验内容二、实验环境和配置三、实验原理及操作1. 添加噪声2.噪声二值化3. 滤波处理四、实验结果2.椒盐噪声二值图与白噪声二值图3.椒盐噪声处理图经处理后图像4.白噪声处理...
    99+
    2023-02-16
    OpenCV图像加噪 滤波 OpenCV图像加噪 OpenCV图像滤波 OpenCV图像
  • Vue之过滤器详解
    <body> <div id="root"> <h2>显示格式化后的时间</h2> &l...
    99+
    2024-04-02
  • C++ opencv图像平滑滤波器使用示例
    目录前言一、均值滤波1.均值滤波函数2.均值滤波代码二、高斯滤波1.高斯滤波函数2.高斯滤波代码三、中值滤波1.中值滤波函数2.中值滤波代码四、双边滤波1.双边滤波函数2.双边滤波代...
    99+
    2024-04-02
  • C++ opencv图像平滑滤波器如何使用
    这篇文章主要介绍“C++ opencv图像平滑滤波器如何使用”,在日常操作中,相信很多人在C++ opencv图像平滑滤波器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++&n...
    99+
    2023-06-30
  • PythonOpenCV机器学习之图像识别详解
    目录背景一、人脸识别二、车牌识别三、DNN图像分类背景 OpenCV中也提供了一些机器学习的方法,例如DNN;本篇将简单介绍一下机器学习的一些应用,对比传统和前沿的算法,能从其中看出...
    99+
    2024-04-02
  • Vue过滤器使用方法详解
    目录前言过滤器私有过滤器插值表达式中使用v-bind属性绑定全局过滤器前言 本篇来学习vue(仅适用vue2)中过滤器的基本用法 过滤器 过滤器(Filters)是vue为开发者提供...
    99+
    2022-12-15
    Vue过滤器的作用 Vue过滤器如何使用 Vue过滤器
  • PythonOpenCV使用dlib进行多目标跟踪详解
    目录1.使用 dlib 进行多目标跟踪2.项目结构3.dlib 多对象跟踪的简单“朴素”方法4.快速、高效的 dlib 多对象跟踪实现5.完整代码6.改进和建...
    99+
    2024-04-02
  • 详解Servlet之过滤器(Filter)
    过滤器1.为什么使用它?有很多全站性的东西需要处理,例如乱码问题,通过过滤器统一进行过滤更简单2.有什么用?实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以...
    99+
    2023-05-31
    servlet 过滤器 滤器
  • springboot中使用过滤器,jsoup过滤XSS脚本详解
    目录springboot使用过滤器,jsoup过滤XSS脚本1.把可能包含脚本的参数位置分析一下2.分析实现过程3.代码实现过程使用jsoup防止XSS攻击springboot使用过...
    99+
    2024-04-02
  • SpringBoot过滤器Filter使用实例详解
    目录简介用法功能实现简介 过滤器是AOP(面向切面编程)思想的具体实现。可以过滤浏览器发出的请求,并且决定放行请求还是中断请求。 在浏览器对服务器发起请求或者服务器对浏览器响应,都会...
    99+
    2024-04-02
  • 网关Gateway过滤器的使用详解
    目录前言:全局过滤器自定义全局过滤器跨域问题前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Gateway过滤器的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己...
    99+
    2024-04-02
  • JavaFile类常用方法与文件过滤器详解
    目录File类File类常用的构造方法查看文件的相应信息遍历目录下的文件文件过滤器对子目录进行遍历删除文件及目录File类 File类用于封装一个路径,这个路径可以是从系统盘符开始的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作