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

其实我们平时在深度学习中所说的卷积操作,在 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,则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)

结果展示:

高斯双边滤波

双边滤波(模糊)使用的是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对图像进行模糊处理详解流程的文章就介绍到这了,更多相关Python 图像模糊处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • OpenCV实现图像滤波之双边滤波

    本文实例为大家分享了opencv实现双边滤波的具体代码,供大家参考,具体内容如下 1.2D卷积 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 使用自定义卷积核进行图像2D卷积操作 函数原型: filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) -> dst 函数返回值:dst:2d卷积操作后的结果 函数解析: ddepth:指定

  • OpenCV学习方框滤波实现图像处理代码示例

    目录 一.方框滤波 二.C++代码 三.python代码 四.结果展示 1.原始图像 2.归一化 3.不归一化 4.平方和求均值 一.方框滤波    方框滤波是均值滤波的一种形式.在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和的均值,而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和. 二.C++代码 #include <iostream> #include <opencv2\ope

  • Python+Opencv实现图像匹配功能(模板匹配)

    本文实例为大家分享了Python+Opencv实现图像匹配功能的具体代码,供大家参考,具体内容如下 1.原理 简单来说,模板匹配就是拿一个模板(图片)在目标图片上依次滑动,每次计算模板与模板下方的子图的相似度,最后就计算出了非常多的相似度: 如果只是单个目标的匹配,那只需要取相似度最大值所在的位置就可以得出匹配位置: 如果要匹配多个目标,那就设定一个阈值,就是说,只要相似度大于比如0.8,就认为是要匹配的目标. 1.1 相似度度量指标 差值平方和匹配 CV_TM_SQDIFF 标准化差值平方和匹

  • Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy import signal, misc import matplotlib.pyplot as plt image = misc.ascent()#二维图像数组,lena图像 w = np.zeros((50,50))#全0二维数组,卷积核 w[0][0]=1.0#修改参数,调整滤波器 w[49][2

  • 利用OpenCV给彩色图像添加椒盐噪声的方法

    目录 一.图像噪声 二.椒盐噪声 三.C++代码 四.结果展示 1.原图 2.添加椒盐噪声 五.python代码 六.结果展示 1.原图 2.添加椒盐噪声 七.总结 一.图像噪声 图像噪声是图像在获取或者传输过程中受到随机信号干扰,妨碍人们对图像理解及分析处理的信号.很多时候将图像看作随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即使用其概率分布函数和概率密度分布函数.图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产生图像噪声的主要因素是所用的传输信道受

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

    其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作.那么它是什么操作呢?它就是图像的模糊(滤波)处理. 均值滤波 使用 opencv 中的cv2.blur(src, ksize)函数.其参数说明是: src: 原图像 ksize: 模糊核大小 原理:它只取内核区域下所有像素的平均值并替换中心元素.3x3 标准化的盒式过滤器如下所示: 特征:核中区域贡献率相同. 作用:对于椒盐噪声的滤除效果比较好. # -*-coding:utf-8-*- ""&q

  • Python OpenCV实现识别信用卡号教程详解

    目录 通过与 OpenCV 模板匹配的 OCR 信用卡 OCR 结果 总结 今天的博文分为三个部分. 在第一部分中,我们将讨论 OCR-A 字体,这是一种专为辅助光学字符识别算法而创建的字体. 然后我们将设计一种计算机视觉和图像处理算法,它可以: 本地化信用卡上的四组四位数字. 提取这四个分组中的每一个,然后单独分割 16 个数字中的每一个. 使用模板匹配和 OCR-A 字体识别 16 个信用卡数字中的每一个. 最后,我们将看一些将信用卡 OCR 算法应用于实际图像的示例. 通过与 OpenCV

  • 浅谈Python Opencv中gamma变换的使用详解

    伽马变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正. 伽马变换的基本形式如下: 大于1时,对图像的灰度分布直方图具有拉伸作用(使灰度向高灰度值延展),而小于1时,对图像的灰度分布直方图具有收缩作用(是使灰度向低灰度值方向靠拢). #分道计算每个通道的直方图 img0 = cv2.imread('12.jpg') hist_b = cv2.calcHist([img0],

  • Python OpenCV特征检测之特征匹配方式详解

    目录 前言  一.暴力匹配器 二.FLANN匹配器 前言  获得图像的关键点后,可通过计算得到关键点的描述符.关键点描述符可用于图像的特征匹配.通常,在计算图A是否包含图B的特征区域时,将图A称做训练图像,将图B称为查询图像.图A的关键点描述符称为训练描述符,图B的关键点描述符称为查询描述符. 一.暴力匹配器 暴力匹配器使用描述符进行特征比较.在比较时,暴力匹配器首先在查询描述符中取一个关键点的描述符,将其与训练描述符中的所有关键点描述符进行比较,每次比较后会给出一个距离值,距离最小的值对应最佳

  • OpenCV实现图像背景虚化效果原理详解

    目录 0 写在前面 1 小孔成像 2 光学成像 3 虚化效果 4 代码实战 0 写在前面 相信用过相机的同学都知道虚化特效,这是一种使焦点聚集在拍摄主题上,让背景变得朦胧的效果,例如本文最后实现的背景虚化效果 相机虚化特效背后的原理是什么?和计算机视觉有什么关系?本文带你研究这些问题. 1 小孔成像 小学我们就知道,没有光就不存在图像,为了产生图像,场景必须有一个或多个.直接或间接的光源. 如图所示,光照主要分为三类: 散射 直接光照 漫反射 在获得光源后,将产生从物体到检测平面的光线. 由于从

  • Python+OpenCV实现阈值分割的方法详解

    目录 一.全局阈值 1.效果图 2.源码 二.滑动改变阈值(滑动条) 1.效果图 2.源码 三.自适应阈值分割 1.效果图 2.源码 3.GaussianBlur()函数去噪 四.参数解释 一.全局阈值 原图: 整幅图采用一个阈值,与图片的每一个像素灰度进行比较,重新赋值: 1.效果图 2.源码 import cv2 import matplotlib.pyplot as plt #设定阈值 thresh=130 #载入原图,并转化为灰度图像 img_original=cv2.imread(r'

  • Python OpenCV实现图片预处理的方法详解

    目录 一.图片预处理 1.1 边界填充(padding) 1.2 融合图片(mixup) 1.3 图像阈值 二.滤波器 2.1 均值滤波器 2.2 方框滤波器 2.3 高斯滤波器 2.4 中值滤波 2.5 所有滤波器按照上述顺序输出 一.图片预处理 1.1 边界填充(padding) 方法 : cv2.copyMakeBorder BORDER_REPLICATE:复制法,也就是复制最边缘像素. BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abc

  • Python实现统计图像连通域的示例详解

    目录 数组统计函数 连通域标记 连通域统计 数组统计函数 ndimage提供一系列函数,可以计算标注后的数组的相关特征,比如最值.均值.均方根等. 下列函数,如果未作其他说明,那么就有3个参数,分别是(input, labels=None, index=None),其中input为输入数组:labels为input的标签,形状和input相同:index为整数或者整数数列,为用于计算的label. 函数 物理量 函数 物理量 mean 平均值 center_of_mass 质心 maximum

  • Python Flask搭建yolov3目标检测系统详解流程

    [人工智能项目]Python Flask搭建yolov3目标检测系统 后端代码 from flask import Flask, request, jsonify from PIL import Image import numpy as np import base64 import io import os from backend.tf_inference import load_model, inference os.environ['CUDA_VISIBLE_DEVICES'] = '

随机推荐