opencv-图像平滑

高斯平滑
高斯平滑即采用高斯卷积核对图像矩阵进行卷积操作。高斯卷积核是一个近似服从高斯分布的矩阵,随着距离中心点的距离增加,其值变小。这样进行平滑处理时,图像矩阵中锚点处像素值权重大,边缘处像素值权重小。

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from cv2 import GaussianBlur

img = cv.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
img_gauss = cv.GaussianBlur(img,(3,3),1)  #opencv中提供了GaussianBlur()函数来进行高斯平滑
cv.imshow("img",img)  #显示原图
cv.imshow("img_gauss",img_gauss)  #显示高斯平滑图
cv.waitKey(0)  #参数为 0,表示程序会无限期地等待用户按下键盘上的任意键。
cv.destroyAllWindows() #cv.destroyAllWindows() 是 OpenCV 中的一个函数调用,用于关闭所有通过 cv2.imshow() 打开的图像窗口。这个函数没有参数,调用它会关闭当前打开的所有窗口。

GaussianBlur()

代码使用示例和效果如下:(相比于原图,平滑后图片变模糊)
在这里插入图片描述
cv2.GaussianBlur() 是 OpenCV 中用于对图像进行高斯模糊(Gaussian Blur)的函数。高斯模糊是一种常用的图像平滑技术,它可以有效地去除图像中的噪声,使图像变得更加平滑。

该函数的基本语法如下:

cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

参数说明:

  • src: 输入图像。
  • ksize: 高斯核的大小。通常为正的奇数(如3、5、7…)。高斯核的大小影响了模糊的程度。
  • sigmaX: X 方向上的高斯核标准差。如果设为0,则根据 ksize 计算。
  • dst(可选): 输出图像。
  • sigmaY(可选): Y 方向上的高斯核标准差。如果设为0,则与 sigmaX 相等。
  • borderType(可选): 边界处理的方式,通常为默认值 cv2.BORDER_DEFAULT

均值平滑

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np

img = cv.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
img_blur = cv.blur(img,(3,5)) #均值平滑
# img_blur = cv.boxFilter(img,-1,(3,5))
cv.imshow("img",img)
cv.imshow("img_blur",img_blur)
cv.waitKey(0)#参数为 0,表示程序会无限期地等待用户按下键盘上的任意键
cv.imshow("img",img)
cv.destroyAllWindows()#cv.destroyAllWindows() 是 OpenCV 中的一个函数调用,用于关闭所有通过 cv2.imshow() 打开的图像窗口。这个函数没有参数,调用它会关闭当前打开的所有窗口。

在这里插入图片描述

cv2.blur() 是 OpenCV 中用于对图像进行均值模糊(Blur)的函数。均值模糊是一种简单的平滑技术,它通过取图像局部区域的平均值来模糊图像,从而实现去噪的效果。

该函数的基本语法如下:

cv2.blur(src, ksize[, dst[, anchor[, borderType]]])

参数说明:

  • src: 输入图像。
  • ksize: 决定了模糊程度的核的大小。通常为正的奇数(如3、5、7…)。
  • dst(可选): 输出图像。
  • anchor(可选): 锚点,默认值 (-1, -1) 表示核的中心。
  • borderType(可选): 边界处理的方式,通常为默认值 cv2.BORDER_DEFAULT

中值平滑
中值平滑也有核,但并不进行卷积计算,而是对核中所有像素值排序得到中间值,用该中间值来代替锚点值。opencv中利用medianBlur()来进行中值平滑,中值平滑特别适合用来去除椒盐噪声。

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import random
img = cv.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
rows,cols = img.shape[:2]
#加入椒盐噪声
for i in range(100):
    r = random.randint(0,rows-1)
    c = random.randint(0,cols-1)
    img[r,c]=255
img_medianblur = cv.medianBlur(img,5)
cv.imshow("img",img)
cv.imshow("img_medianblur",img_medianblur)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述
cv2.medianBlur() 是 OpenCV 中用于对图像进行中值模糊的函数。中值模糊是一种非线性的平滑技术,它将每个像素的值替换为相应邻域中所有像素的中值。这种方法对于去除图像中的椒盐噪声等离群点非常有效。
该函数的基本语法如下:

cv2.medianBlur(src, ksize[, dst])

参数说明:

  • src: 输入图像。
  • ksize: 决定了模糊程度的核的大小。通常为正的奇数(如3、5、7…)。
  • dst(可选): 输出图像。

双边滤波
相比于上面几种平滑算法,双边滤波在平滑的同时还能保持图像中物体的轮廓信息。双边滤波在高斯平滑的基础上引入了灰度值相似性权重因子,所以在构建其卷积核核时,要同时考虑空间距离权重和灰度值相似性权重。在进行卷积时,每个位置的邻域内,根据和锚点的距离d构建距离权重模板,根据和锚点灰度值差异r构建灰度值权重模板,结合两个模板生成该位置的卷积核。

#coding:utf-8

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import random
import math
img = cv.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
img_bilateral = cv.bilateralFilter(img,0,0.2,40)
cv.imshow("img",img)
cv.imshow("img_bilateral",img_bilateral)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述
cv2.bilateralFilter() 是 OpenCV 中用于进行双边滤波的函数。双边滤波是一种非线性滤波技术,它考虑了像素之间的空间距离和像素值之间的灰度相似性。这使得双边滤波能够在平滑图像的同时保留边缘
该函数的基本语法如下:

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])

参数说明:

  • src: 输入图像。
  • d: 领域直径。如果非正数,会从 sigmaSpace 计算。
  • sigmaColor: 色彩空间的标准差。较大的值表示在颜色空间中考虑更广泛的区域。
  • sigmaSpace: 坐标空间的标准差。较大的值表示在空间中考虑更广泛的区域。
  • dst(可选): 输出图像。
  • borderType(可选): 边界处理的方式,通常为默认值 cv2.BORDER_DEFAULT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/173822.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业领域的设备“监测”和“检测”有何区别?

在工业领域中,设备的监测和检测是关键的运维活动,它们在保障设备可靠性和生产效率方面发挥着重要作用。尽管这两个术语经常被人们混为一谈,但它们在含义和应用上存在一些关键区别。 "监测"与"检测"的概念 1. 监测&#…

【每日一题】设计循环队列(C语言)

循环队列是我们可以对队列有更深一步的理解的题目,而且可以进一步加强其他方面的知识(例如对循环数组的取模运算,指针的解引用),是个蛮不错的巩固习题,话不多说,进入正题。 链接在此&#xff1…

【漏洞复现】IP-guard WebServer 存在远程命令执行漏洞

漏洞描述 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危…

Fiddle抓包工具的安装

Fiddle抓包工具的安装 首先进入官网:https://www.telerik.com/download/fiddler/fiddler-everywhere-windows 然后Fiddle为我们提供了很多个版本,其中只有一个版本是免费的,如下图: 成功下载如下图:

requests解决HAR支持问题:引入第三方库提升开发效率

关于HAR支持的问题已关闭。HAR(HTTP Archive)是一种用于存储HTTP请求和响应的标准格式,广泛应用于网络调试和性能优化中。然而,HAR支持的缺失可能会给开发者带来不便,影响其工作效率。 解决方案 为了解决这个问题&…

【图数据库实战】图数据库基本概念

1、图数据库的概念 维基百科图书库的概念: 在计算机科学中,图数据库(英语:graph database,GDB)是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该系统的关键概念…

【vue】ant-design-vue的树结构实现节点增删改查

根据业务需要,实现树结构的节点新增编辑删除功能,主要逻辑是利用树节点的scopedSlots属性对其进行自定义改造,监听悬停事件在节点右侧出现增删改对应图标,点击图标出现弹窗表单对内容进行修改,具体代码如下&#xff1a…

prometheus基本介绍 prometheus和zabbix的区别 grafana可视化工具

一、 promethues概念prometheus介绍promethues的特点prometheus的工作原理prometheus的架构 二、promethues和zabbix的区别三、prometheus安装部署prometheus下载安装prometheus启动浏览器访问查看暴露指标将Prometheus配置为systemd管理 配置node_exporter监控项node_promethe…

GNSS位移监测站系统是什么

WX-WY4G 一、GNSS位移监测站系统的工作原理GNSS位移监测站系统是一种基于导航卫星系统(GNSS)的高精度位移监测技术。它通过接收和处理来自卫星的信号,对地表物体的位置进行精度的实时监测。这个系统具有可靠性的特点,被广泛应用于…

Postgresql常用命令函数

1、string_agg()函数 1.1用法: string_agg(expression, delimiter),参数类型(text, text) or (bytea, bytea),返回类型和参数类型一致,第一个参数是字段名,第二个参数是样式,比如,或者#分隔。 1.2实战: SELECT * FR…

干货|数据资产评估的基本方法和选择方法

作为一项资产,数据应当拥有可计量的实际价值。所谓数据价值评估,即是指通过专业化的数据质量评价和价值评估,对数据进行客观评估,使其成为可计量的资产,并确定其具体的价值。这可以借助各种评估方法和指标,…

股票扩展功能(十)

A-扩展功能 文章目录 A-扩展功能一. 展示最近10天的斋戒信息, 以 PDF进行预览二. 展示最近10天的斋戒信息, 以 data list 进行响应 一. 展示最近10天的斋戒信息, 以 PDF进行预览 接口描述: 接口地址:/StockApi/extFasting/show 请求方式:GET consumes: produce…

2023年中国AI大模型行业发展趋势分析:未来发展将走向通用化和专用化并行[图]

AI大模型是AI预训练大模型的简称,通过在大规模数据上进行预训练,无需大量微调即可支持各种应用,具备多层神经网络结构、高级优化算法和强大计算资源,显著提升了AI的通用性和实用性。 AI大模型特点及意义 资料来源:共研…

动态规划十大经典问题

动态规划十大经典问题 动态规划十大经典问题 数塔取数问题、矩阵取数问题、最大连续子段和、最长递增子序列、最长公共子序列、最长公共子串、最短编辑距离、背包问题、正整数分组、股票买卖问题。 1、数塔取数问题 // 数塔取数问题 public static int dataTowerAccess(int[]…

自定义类型之结构体

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Javaweb实现数据库简单的增删改查

JDBC介绍 JDBC ( Java Data Base Connectivity ) 是一 种 Java 访问 数据库 的技术,它提供 执行 SQL 语句的 Java API ,由 一组 类 和接口组成,可以为 不同的 数据库提供统一访问 JDBC工作原理 JDBC应用编程 1、准备…

北醒携全球首款256线车规量产激光雷达亮相广州国际车展

11月17日,北醒携全球首款256线车规量产激光雷达亮相广州国际车展。在车展期间,北醒还公布了与广州花都区人民政府达成投资合作,获滴滴自动驾驶投资以及与捷普联合打造的全球首条量产256线级别车规激光雷达的生产线即将贯通的等多条利好信息&a…

快时尚品牌Halara登上TikTok美国小店榜Top 5,运动健身风靡TikTok

TikTok Shop美国电商数据周榜(11/06-12)已出,具体信息如下: 上周总GMV达到5850万美元,日均出单840万美元;单日出单最高达2110万美元,是当前美国单日最高销售额; 截至11月12日&…

Postman接口测试 —— 设置断言和集合运行

一、常见的5种断言方法 Postman是一款非常强大的API接口调式工具,它自带断言方法,不需要学习JavaScript脚本,非常方便。 (1)Status code:Code is 200(校验接口返回结果的状态码) (2&#xff09…

轻松答题:用Python编写网页自动答题脚本助你高分通过

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 解释器 Pycharm 编辑器 模块使用: from selenium import webdriver —> 自动测试模块 pip install selenium3.141.0 <指定版本安…