Python OpenCV图像模糊处理介绍
作者:Hong_Youth 发布时间:2023-05-20 14:20:17
其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作。那么它是什么操作呢?它就是图像的模糊(滤波)处理。
均值滤波
使用 opencv 中的cv2.blur(src, ksize)
函数。其参数说明是:
src
: 原图像ksize
: 模糊核大小
原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3 标准化的盒式过滤器如下所示:
特征:核中区域贡献率相同。作用:对于椒盐噪声的滤除效果比较好。
# -*-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)
结果展示:
高斯滤波
高斯滤波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)
函数。
说明:sigmaX
,sigmaY
分别表示 X,Y 方向的标准偏差。如果仅指定了sigmaX
,则sigmaY
与sigmaX
相同;如果两者都为零,则根据内核大小计算它们。
特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。
作用:高斯模糊在从图像中去除高斯噪声方面非常有效。
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)
结果展示:
高斯双边滤波
双边滤波(模糊)使用的是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)
结果展示:
来源:https://blog.51cto.com/u_15483653/4904087


猜你喜欢
- 代码如下: '排序 Function Sort1(ary) Dim KeepChecking,I,FirstValue,Second
- XMLHttpRequest 最近在 W3C 标准之路上又迈进了一步,W3C Web API&nbs
- 在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录。但其实 HT
- Step 1:Creating a Linked Server. EXEC sp_addlinkedserver 'ADSI'
- 很多时候,由于程序设计需要,要求在asp的include包含文件里调用动态的文件。如<!--#include file=&q
- 进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念:1.定义进程是具有一定独立功能的程序关
- 粉丝提问今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用
- 存储过程采用的是select top 加 not in的方式完成,速度也算是相当快了 我测试过了百万级数据量一般查询在1秒一下,贴出来大家交
- 本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下:目标士兵突击案例身份运算符封装封装 是面向对象编程的一大特点面向
- 1. HADOOP背景介绍1.1 什么是HADOOP1.HADOOP是apache旗下的一套开源软件平台2.HADOOP提供的功
- python数组和矩阵先创建一个一维数组直接定义一个数组:a = [1,2,3,4,5]b = ['a','c
- 一、前言二、爬取观影数据https://movie.douban.com/在『豆瓣』平台爬取用户观影数据。爬取用户列表网页分析为了获取用户,
- Fedora5下配置MySQL (很有参考价值的 MySQL资料 包括如何在linux文件系统移动MySQL数据库的位置) 一、下载MySQ
- 前言如果想要容易理解核心的特征计算的话建议先去看看我之前的听歌识曲的文章,传送门:https://www.jb51.net/article/
- 说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引,然后又扯到了目录
- 本文实例讲述了python实现图片变亮或者变暗的方法。分享给大家供大家参考。具体实现方法如下:import Image# open an i
- Python 和 Ruby 也有这样的框架,但因为在实际使用中会不可避免地用到含有同步代码的库,因此没能成长起来,而在 Node.js 之前
- 这几天在QQ群里知道了几个比较好的优化方面的站,感觉看高手的文章简直就是一种享受。和很多现在正在阅读这篇文章的站长一样,我即将毕业,但是还没
- 摘要:发现给div绑定keyup.enter事件是没有效果的。那该如何实现呢?下面直接上代码吧1、在template中代码2、在create
- 前言本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的