python图像滤波

预备知识

  • 滤波器

    1. 低通滤波器的主要作用可以消除噪声,
    2. 高通滤波器的作用可以提取边缘
  • 核函数

    如果我们想要将这两类数据进行分类,那么分类的边界将会是一个椭圆:

    但是如果我们可以通过一个映射,将数据的特征通过某个非线性映射映射到三维空间,其特征表示为,并且映射关系为,那么我们是不是就可以用一个平面来将其分类,也即是将上述椭圆的x特征换成z特征

    这个映射,就是将一个空间中的特征转换到另外一个空间,这就是空间转换(映射)的意义,即可以将原来线性不好分的数据转换到另外一个空间,在这个空间中可以用一个超平面线性可分

    我们就不需要知道那个映射到底是个什么鬼,我们就可以直接通过核函数,就可以求导高维空间的内积了,从而可以计算出高维空间中两个数据点之间的距离和角度。

  • 表示二维矩阵,核不同的值表示不同的算法

滤波算法

  • ​ 应用于图像预处理

    以下源图像为

  • 滤波算法:

    均值滤波【线性滤波:】

    • 作用:对胡椒盐噪声的滤除比较好

    • 缺点:它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

    • 特点:核中间区域贡献率相同

    • 语法调用:cv2.blur(输入源图像,核的大小)

      1. 源图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片,但需要注意,待处理的图片深度应该为CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
      2. 内核的大小。一般这样写Size( w,h )来表示内核的大小( 其中,w 为像素宽度, h为像素高度)。Size(3,3)就表示3x3的核大小,Size(5,5)就表示5x5的核大小
    • 代码展示:

      import cv2 path = 'D://picture//pig.jpg'
      img = img  = cv2.imread(path)
      img_blur = cv2.blur(img,(15,15))
      cv2.imshow('blur',img_blur)
      cv2.waitKey(0)
      

      效果图:

    高斯滤波【线性滤波】

    • 操作说明:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

    • 作用:对高斯噪音的滤除比较好

    • 特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。高斯滤波最有用的滤波操作,虽然效率往往不是最高的。

    • 语法调用:

      cv2.GaussianBlur(源图像,核大小,x方向的标准差,y方向的标准差)

      大小:正数,奇数

      标准差:‘(数值越大越模糊),若为0则根据图片尺寸自动计算

      如果只给一个标准差,则默认两个方向的标准差一致

      import cv2
      img_GaussianBlur = cv2.GaussianBlur(img, (15,15), 1, 0.1)
      cv2.imshow('GaussianBlur',img_GaussianBlur)
      cv2.waitKey(0)
      

      效果图:

中值滤波【非线性滤波技术】

  • 基本思想:中心点的像素值用核中像素点的中值来代替该像素点的灰度值

  • 特征:去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节

  • 一般采用奇数点的邻域来计算中值,但如果像素点数为偶数时,中值就取排序像素中间两点的平均值

  • 语法调用:

    cv2.medianBlur(源图像,核大小)

    核大小为一个数字

    import cv2
    img_medianBlur = cv2.medianBlur(img,15)
    cv2.imshow('medianBlur',img_medianBlur)
    cv2.waitKey(0)
    
  • 效果图

双边滤波【非线性滤波】

  • 基本思想:主要是针对Gauss 滤波中将Gauss 权系数直接与图像信息作卷积运算进行图像滤波的原理,将滤波权系数优化成Gauss 函数和图像亮度信息的乘积,优化后的权系数再与图像信息作卷积运算

  • 作用:能在滤波的同时考虑到图像信息中的图像边缘信息,使图像在正常Gauss 滤波后很模糊的边缘信息得以保持清晰,并且图像边缘更加平滑。

  • 特征:运行时间长

  • 语法调用:

    cv2.bliateralFilter(源图像,核的大小(用中心点的直径表达,如果该值为非正数,则会自动从参数sigmaSpace中计算得到),color filter,space filter)

    • 说明:

      • color filter:基于像素差的高斯滤波器,使临近的像素点被用于滤波

      • space filter:空间上的高斯滤波器,使临近的像素点被用于滤波

    img_bilateralFilter = cv2.bilateralFilter(img, d=15, sigmaColor = 120, sigmaSpace =180 )
    cv2.imshow('bilateralFilter',img_bilateralFilter)
    

    效果图:

方框滤波【线性滤波:】

  • 说明:每一个输出像素的是内核邻域像素值的平均值得到

    这里是一个长宽分别为Kwidth和Kheight的窗口函数,在此区域内邻域中像素值叠加求平均即可求出位于kernel中心点像素的像素值。

​ boxFilter()函数方框滤波所用的核为:

当normalize=true的时候,方框滤波就变成了均值滤波。

均值滤波是方框滤波归一化后的特殊情况。其中,归一化就是把要处理的量都缩放到一个范围内,比如(0,1),以便统一处理和直观量化。

dst = cv2.boxFilter( src, ddepth, ksize, anchor, normalize, borderType )
  • src是需要处理的图像,即源图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者CV_64F中的一种。

  • ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度

  • ksize是滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高度和宽度。例如,滤波核的值可以为(3,3),表示以3×3大小的邻域均值作为图像滤波处理的结果

  • 当参数normalize=0时,表示不需要进行归一化处理,直接使用邻域像素值的和。

  • borderType是边界样式,该值决定了以何种方式处理边界。

    对于参数anchor、normalize和 borderType,直接采用其默认值即可

import cv2
img_boxFilter = cv2.boxFilter(img,-1,(15,15))
cv2.imshow('img_boxFilter',img_boxFilter)
cv2.waitKey(0)

效果图:

python图像滤波相关推荐

  1. python进行图像滤波_Python图像滤波处理操作示例【基于ImageFilter类】

    本文实例讲述了Python图像滤波处理操作.分享给大家供大家参考,具体如下: 在图像处理中,经常需要对图像进行平滑.锐化.边界增强等滤波处理.在使用PIL图像处理库时,我们通过Image类中的成员函数 ...

  2. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  3. 计算机视觉基础-图像处理(图像滤波)cpp+python

    4.1 简介 图像的实质是一种二维信号,滤波是信号处理中的一个重要概念.在图像处理中,滤波是一种非常常见的技术,它们的原理非常简单,但是其思想却十分值得借鉴,滤波是很多图像算法的前置步骤或基础,掌握图 ...

  4. Python Imaging Library: ImageFilter Module(图像滤波模块)

    Python Imaging Library: ImageFilter Module(图像滤波模块) ImageFilter模块包含一个预定义的滤波器集,它可以与图像类的滤波方法一起使用. Examp ...

  5. 2.4 Python图像的空域增强处理-空域滤波

    2.4 Python图像的空域增强处理-空域滤波 文章目录 2.4 Python图像的空域增强处理-空域滤波 1 算法原理 2 代码 3 效果 1 算法原理 空域滤波(线性平滑滤波器.线性锐化滤波器. ...

  6. OpenCV——几种图像滤波总结(python实现和c++实现)

    OpenCV--图像滤波原理及实现 4.1 简介 图像的实质是一种二维信号,滤波是信号处理中的一个重要概念.在图像处理中,滤波是一种非常常见的技术,它们的原理非常简单,但是其思想却十分值得借鉴,滤波是 ...

  7. (学习笔记)图像滤波及其python实现

    1.图像滤波 图像滤波是在尽量保留原图像细节特征的条件下,对该图像的噪声进行抑制,处理效果的好坏会直接影响后续操作的有效性. 消除图像中噪声数据的过程叫做图像滤波或图像平滑,图像中的有效信息主要集中在 ...

  8. 【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)

    目录 一.什么是滤波以及滤波的目的? 二.均值滤波(cv2.blur()) 1.原理 2.关键代码 3.封装代码 二.中值滤波(cv2.medianBlur()) 1.原理 2.关键代码 3.封装代码 ...

  9. python滤波器的截面图_Python OpenCV学习笔记之:图像滤波处理

    # -*- coding: utf-8 -*- # 图像滤波 ''' 图像处理也支持低通滤波(LPF)和高通滤波(HPF)处理 OpenCV提供filter2D函数对图像进行滤波处理 ''' impo ...

最新文章

  1. 开发安卓app游戏_游戏陪玩系统APP开发平台
  2. SAP RETAIL 特征参数文件(Characteristic Profile) III
  3. C++Primer ch4笔记
  4. layui下拉框怎么获取自定义值_layui select获取自定义属性方法
  5. python合并csv文件_PYTHON合并CSV文件的实践
  6. springmvc 前端传给后台中文数据时,会产生乱码
  7. mysql数据库复制基本原理_MySQL的复制原理以及流程
  8. junit 静态方法_预期异常规则和模拟静态方法– JUnit
  9. 如何使用Spring设置安全的REST API
  10. CodeForces 757B Bash's Big Day(线性筛)
  11. python os.path.split_Python中split()和os.path.split()
  12. atitit..国富论 在现代it企业项目管理中的作用attialx 总结---国富论读后感 attialx
  13. Zynq-Linux移植学习笔记之13-i2c驱动配置
  14. 服务器lsass状态代码c0000005,Windows服务器上lsass.exe进程CPU使用率异常问题排查方法...
  15. Quartz cron表达式(时间表达式)
  16. 搜狗站长移动开放适配的pattern匹配规则怎么写?
  17. 31、Java——JDBC实现账号密码登录
  18. Hexo-域名设置+收录
  19. VMware Fusion 12.2 SLIC 2.6 MOD
  20. GGS校园超市购物系统

热门文章

  1. 数据科学导论——数据采集和预处理作业
  2. 方差、标准差、均方差、均方误差、均方根误差详细总结
  3. c++7-2 求集合数据的均方差
  4. 股票入门技巧-----股票开户
  5. 百度云服务器试用体验
  6. TinkerBoard运行树莓派Raspbian OS
  7. python语言只能以程序方式执行_Python语言程序设计
  8. 保姆级教程超硬核包会,SystemVerilog SV 覆盖率
  9. hellgate 射击体验
  10. 关于Out of the box翻译【待整理】