Python OpenCV对图像进行模糊处理详解流程

作者:Hong_Youth 时间:2022-05-16 03:54:19 

其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作。那么它是什么操作呢?它就是图像的模糊(滤波)处理。

均值滤波

使用 opencv 中的cv2.blur(src, ksize)函数。其参数说明是:

  • src: 原图像

  • ksize: 模糊核大小

原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3 标准化的盒式过滤器如下所示:

Python OpenCV对图像进行模糊处理详解流程

  • 特征:核中区域贡献率相同。

  • 作用:对于椒盐噪声的滤除效果比较好。


# -*-coding:utf-8-*-
"""
File Name: image_deeplearning.py
Program IDE: PyCharm
Date: 2021/10/17
Create File By Author: Hong
"""
import cv2 as cv

def image_blur(image_path: str):
   """
   图像卷积操作:设置卷积核大小,步距
   :param image_path:
   :return:
   """
   img = cv.imread(image_path, cv.IMREAD_COLOR)
   cv.imshow('input', img)
   # 模糊操作(类似卷积),第二个参数ksize是设置模糊内核大小
   result = cv.blur(img, (5, 5))
   cv.imshow('result', result)

cv.waitKey(0)
   cv.destroyAllWindows()

if __name__ == '__main__':
   path = 'images/2.png'
   image_blur(path)

结果展示:

Python OpenCV对图像进行模糊处理详解流程

高斯滤波

高斯滤波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)函数。

说明:sigmaX,sigmaY分别表示 X,Y 方向的标准偏差。如果仅指定了sigmaX,则sigmaYsigmaX相同;如果两者都为零,则根据内核大小计算它们。

  • 特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。

  • 作用:高斯模糊在从图像中去除高斯噪声方面非常有效。


def image_conv(image_path: str):
   """
   高斯模糊
   :param image_path:
   :return:
   """
   img = cv.imread(image_path, cv.IMREAD_COLOR)
   cv.imshow('img', img)
   # 高斯卷积(高斯滤波), 可以设置ksize,必须为奇数,不为0时,后面的步骤不起作用;也可以设置成(0,0),然后通过sigmaX和sigmaY计算标准偏差
   result = cv.GaussianBlur(img, (0, 0), 15)
   cv.imshow('result', result)

cv.waitKey(0)
   cv.destroyAllWindows()

if __name__ == '__main__':
   path = 'images/2.png'
   image_conv(path)

结果展示:

Python OpenCV对图像进行模糊处理详解流程

高斯双边滤波

双边滤波(模糊)使用的是cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)函数。

说明:d为邻域直径,sigmaColor为空间高斯函数标准差,参数越大,临近像素将会在越远的地方越小。

sigmaSpace灰度值相似性高斯函数标准差,参数越大,那些颜色足够相近的的颜色的影响越大。

双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。

  • 特征:处理耗时。

  • 作用:在滤波的同时能保证一定的边缘信息。


# 边缘保留滤波器——高斯双边模糊
def image_bifilter(image_path: str):
   """
   高斯双边模糊
   :param image_path: 图片文件
   :return: 无返回值
   """
   img = cv.imread(image_path, cv.IMREAD_COLOR)
   cv.imshow('input', img)
   # 第三个参数是设置色彩、第四个参数是设置图像坐标
   result = cv.bilateralFilter(img, 0, 50, 10)
   cv.imshow('result', result)

cv.waitKey(0)
   cv.destroyAllWindows()

if __name__ == '__main__':
   path = 'images/2.png'
   image_bifilter(path)

结果展示:

Python OpenCV对图像进行模糊处理详解流程

来源:https://blog.csdn.net/hallobike/article/details/120873754

标签:Python,图像模糊处理,OpenCV
0
投稿

猜你喜欢

  • asp无限级分类加js收缩伸展功能代码

    2009-12-08 12:25:00
  • php入门学习知识点三 PHP上传

    2023-11-23 12:10:49
  • 说说tab设计

    2009-07-26 09:56:00
  • python 读取文件并替换字段的实例

    2022-10-18 05:12:21
  • java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input

    2010-07-16 13:23:00
  • go语言interface接口继承多 态示例及定义 解析

    2023-10-14 02:49:27
  • 使用css给图片添加阴影入门篇

    2009-07-06 14:38:00
  • asp如何编写一个加法器?

    2009-11-08 18:58:00
  • Python tkinter实现的图片移动碰撞动画效果【附源码下载】

    2022-03-19 03:05:26
  • python 遍历磁盘目录的三种方法

    2021-10-15 06:36:14
  • Python画图小案例之小雪人超详细源码注释

    2021-09-21 11:49:44
  • sql 存储过程批量删除数据的语句

    2012-08-21 10:24:14
  • PHP cookie,session的使用与用户自动登录功能实现方法分析

    2023-11-21 15:00:43
  • django和vue互传图片并进行处理和展示

    2021-04-24 20:39:16
  • Ubuntu 16.04/18.04 安装Pycharm及Ipython的教程

    2023-11-03 03:49:29
  • 一文教你实现Python重试装饰器

    2022-04-23 08:01:07
  • 如何基于Python制作有道翻译小工具

    2023-10-01 21:00:58
  • PyQt5 在label显示的图片中绘制矩形的方法

    2021-02-02 08:50:45
  • Python面向对象的三大特性封装、继承、多态

    2023-12-11 05:15:52
  • CentOS7下安装python3.6.8的教程详解

    2022-02-17 17:27:29
  • asp之家 网络编程 m.aspxhome.com