《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器

这篇具有很好参考价值的文章主要介绍了《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器


本书京东 优惠购书链接 https://item.jd.com/14098452.html
本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html

《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器,《数字图像处理-OpenCV》连载,opencv,python,人工智能,图像处理,计算机视觉


第 10 章 图像卷积与空间滤波


图像滤波是指在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制,是常用的图像处理方法。
空间滤波也称空间域滤波,滤波器规定了邻域形状与邻域像素的处理方法。线性滤波通过图像与滤波器核进行卷积计算,非线性滤波则包含了绝对值、置零和统计等非线性运算,通过逻辑运算实现图像滤波。


本章内容概要

  • 学习图像的卷积运算,介绍可分离卷积核与图像的边界扩充。
  • 学习典型的空间滤波器,包括盒式滤波器和高斯滤波器。
  • 介绍常用的非线性滤波器,包括统计排序滤波器、自适应滤波器和双边滤波器。
  • 学习常用的梯度算子,包括Laplacian算子、Sobel算子和Scharr算子。
  • 介绍图像金字塔,包括高斯金字塔和拉普拉斯金字塔。

10.3 空间滤波之高斯滤波器

高斯滤波器(Gaussian Filter)是以高斯核函数为权函数的滤波器,在信号和图像处理领域的应用非常广泛。

高斯核函数的数学描述如下。

w ( s , t ) = G ( s , t ) = 1 2 π σ 2 e − r 2 / 2 σ 2 w(s,t) = G(s,t) =\frac{1}{2\pi\sigma^2} e^{-r^2/2\sigma^2} w(s,t)=G(s,t)=2πσ21er2/2σ2

式中, σ \sigma σ 是高斯核的标准差(尺度因子);r 表示任意点到中心点的距离。

高斯卷积核有很多重要的性质。
(1) 高斯卷积核是圆对称(各向同性)的,中心点的权重最大,离中心点越远,权重越小。
(2) 高斯卷积核是可分离卷积核,可以通过水平卷积核和垂直卷积核实现对图像的卷积。
(3) 高斯卷积核的有效尺寸为 ( 6 σ + 1 ) ( 6 σ + 1 ) (6\sigma+1) (6\sigma+1) 6σ+1)6σ+1) ,尺寸越大,平滑程度越高。

OpenCV中的函数cv.GaussianBlur用于实现高斯低通滤波,函数cv.getGaussianKernel用于计算一维高斯滤波器的系数。

函数原型

cv.GaussianBlur(src, ksize, sigmaX[, dst, sigmaY, borderType]) → dst
cv.getGaussianKernel(ksize, sigma[, ktype]) → retval

参数说明

  • src:输入图像,是多维Numpy数组,允许为单通道图像或多通道图像。
  • dst:输出图像,大小和通道数与src相同。
  • ksize:高斯滤波器核的尺寸,格式为元组(w,h),0表示由sigma计算。
  • sigmaX:x轴方向的高斯核标准差。
  • sigmaY:y轴方向的高斯核标准差,可选项,默认值为0。
  • sigma:高斯核的标准差,是浮点型数据。
  • borderType:边界扩充类型,可选项,不支持BORDER_WRAP。
  • ktype:高斯核的数据类型,可选项,默认值为CV_64F,可选CV_32F。
  • retval:返回值,是一维高斯核的系数,形状为(ksize,1)的Numpy数组。

注意问题

  • (1) 高斯核标准差sigmaX不能省略,sigmaY可以省略,缺省时,表示sigmaY=sigmaX。
  • (2) 如果sigmaX=sigmaY=0,则由ksize计算:sigma=0.3*[(ksize-1)/2-1]+0.8 。
  • (3) 如果 ksize=0,则由 sigma 自动计算 ksize。
  • (4) ksize 的宽度 w 与高度 h 必须是奇数。
  • (5) 注意在函数cv.GaussianBlur中,ksize的格式为元组 (w,h),表示滤波器的尺寸;而在函数cv.getGaussianKernel中,ksize的格式为数值,表示滤波器的孔径。
  • (6) 使用函数 cv.GaussianBlur时,推荐对ksize、sigmaX、sigmaY都进行赋值。
  • (7) 函数cv.getGaussianKernel能返回一维高斯滤波器的系数,形状为(ksize,1)。

【例程1003】空间滤波之高斯滤波器

本例程介绍高斯滤波器的使用。


# 【1003】空间滤波之高斯低通滤波器
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__':
    img = cv.imread("../images/Fig1001.png", flags=0)  # 读取灰度图像

    # (1) 计算高斯核
    kernX = cv.getGaussianKernel(5, 0)  # 一维高斯核
    kernel = kernX * kernX.T  # 二维高斯核
    print("1D kernel of Gaussian:{}".format(kernX.shape))
    print(kernX.T.round(4))
    print("2D kernel of Gaussian:{}".format(kernel.shape))
    print(kernel.round(4))

    # (2) 高斯低通滤波核
    ksize = (11, 11)  # 高斯滤波器核的尺寸
    GaussBlur11 = cv.GaussianBlur(img, ksize, 0)  # sigma 由 ksize 计算
    ksize = (43, 43)
    GaussBlur43 = cv.GaussianBlur(img, ksize, 0)

    plt.figure(figsize=(9, 3.2))
    plt.subplot(131), plt.axis('off'), plt.title("1. Original")
    plt.imshow(img, cmap='gray', vmin=0, vmax=255)
    plt.subplot(132), plt.axis('off'), plt.title("2. GaussianFilter (k=11)")
    plt.imshow(GaussBlur11, cmap='gray', vmin=0, vmax=255)
    plt.subplot(133), plt.axis('off'), plt.title("3. GaussianFilter (k=43)")
    plt.imshow(GaussBlur43, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()

运行结果:

1D kernel of Gaussian:(5, 1)
    [[0.0625 0.25   0.375  0.25   0.0625]]
2D kernel of Gaussian:(5, 5)
    [[0.0039 0.0156 0.0234 0.0156 0.0039]
    [0.0156 0.0625 0.0938 0.0625 0.0156]
    [0.0234 0.0938 0.1406 0.0938 0.0234]
    [0.0156 0.0625 0.0938 0.0625 0.0156]
    [0.0039 0.0156 0.0234 0.0156 0.0039]]

程序说明:

(1) 函数cv.getGaussianKernel能返回一维高斯滤波器的系数,可以由此计算并得到二维高斯滤波器的系数。
(2) 运行结果,高斯低通滤波器的滤波图像如图10-3所示。图10-3(2)和图10-3(3)所示为使用不同滤波器尺寸的平滑图像。高斯核的标准差sigma越大,高斯滤波器核的尺寸ksize越大,滤波图像越模糊。


《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器,《数字图像处理-OpenCV》连载,opencv,python,人工智能,图像处理,计算机视觉

图10-3 高斯低通滤波器的滤波图像


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/135370696)
Copyright 2024 youcans, XUPT
Crated:2024-01-03

《数字图像处理-OpenCV/Python》 独家连载专栏 : https://blog.csdn.net/youcans/category_12418787.html文章来源地址https://www.toymoban.com/news/detail-783590.html

到了这里,关于《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《数字图像处理-OpenCV/Python》连载(44)图像的投影变换

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 几何变换分为等距变换、相似变换、仿射变换和投影变换,是指对图像的位置、大小、形状和投影进行变换,将图像从原始平面投影到新的视平面。OpenCV图像的几

    2024年02月04日
    浏览(75)
  • 《数字图像处理-OpenCV/Python》连载(10)图像属性与数据类型

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 在Python语言中,OpenCV以Numpy数组存储图像,对图像的访问和处理都是通过Numpy数组的操作来实现的。 本章内容概要 介绍Python语言中OpenCV的数据结构,学习获取图像

    2024年02月07日
    浏览(88)
  • 《数字图像处理-OpenCV/Python》连载(4)图像的读取与保存

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 为了方便初学者从零开始学习OpenCV-Python,本书从图像的读取、保存和显示等基本操作开始介绍,使读者可以循序渐进地使用和理解本书的每一个例程。 本章内容

    2024年02月09日
    浏览(64)
  • 《数字图像处理-OpenCV/Python》连载(22)绘制直线与线段

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 本章介绍OpenCV的绘图功能和简单的鼠标交互处理方法。与Excel或Matplotlib中的可视化数据图不同,OpenCV中的绘图功能主要用于在图像的指定位置绘制几何图形。 本

    2024年02月02日
    浏览(98)
  • 《数字图像处理-OpenCV/Python》连载(26)绘制椭圆和椭圆弧

    本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 本章介绍OpenCV的绘图功能和简单的鼠标交互处理方法。与Excel或Matplotlib中的可视化数据图不同,OpenCV中的绘图功能主要用于在图像的指定位置绘制几何图形。 本

    2024年02月06日
    浏览(74)
  • 【Python数字图像处理】基于LAB空间的图像去阴影方法

    整体架构流程 (1)阴影区域检测 ①LAB颜色空间 ②阴影检测 ③代码  (2)阴影去除 ①在LAB空间上对单独目标区域去除阴影 ②处理每个阴影区域 ③代码 (3)阴影边缘校正 ①中值滤波器的实现 ②调用中值滤波器 ③代码 效果展示 ①环境图片 ②文档上的阴影 全部代码 基于CNN的进阶方

    2024年02月20日
    浏览(44)
  • python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

    原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变性的角点。 该算法通过计算图像中每个像素点的灰度值的变化,来识别角点。具体来说,Ha

    2024年01月19日
    浏览(44)
  • Python-OpenCV中的图像处理-颜色空间转换

    在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0,

    2024年02月13日
    浏览(43)
  • (数字图像处理MATLAB+Python)第六章图像平滑-第一节:图像平滑概述和空间域平滑滤波

    图像平滑(Image Smoothing) :是一种数字图像处理技术,用于减少图像中的 噪声 和 不规则性 ,使图像更加平滑和连续。在图像中,噪声通常表现为不规则的、突出的像素值,这可能会导致图像细节丢失,使其难以进行分析和处理。图像平滑技术可以通过对像素值进行滤波来

    2023年04月24日
    浏览(58)
  • 【Python_Opencv图像处理框架】信用卡数字识别项目

    本篇文章是opencv学习的第六篇文章,前面主要讲解了对图像的一些基本操作,这篇文章我们就开始大展身手,将前面所学的基础操作活学活用。既能复习基础操作,又能学到一些新的知识。作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰 我们通

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包