【python】图像边缘提取效果增强方法-高斯模糊

一、介绍

高斯模糊是一种常用的图像处理技术,用于减少图像中的噪声和细节。它通过对图像中的每个像素点进行加权平均来实现模糊效果。具体而言,高斯模糊使用一个高斯核函数作为权重,对每个像素点周围的邻域进行加权平均。这样可以使得每个像素点的值受到周围像素点的影响,从而达到模糊图像的效果。

高斯模糊的核心思想是,距离中心像素点越远的像素点对中心像素点的影响越小。这是因为高斯核函数在中心点处取得最大值,并随着距离的增加而逐渐减小。通过调整高斯核函数的标准差参数,可以控制模糊程度。标准差越大,模糊程度越高。

高斯模糊广泛应用于图像处理领域,常见的应用包括图像降噪、图像平滑、边缘检测等。

二、作用

高斯模糊是一种常用的图像处理技术,它可以在图像上应用一个高斯滤波器,以减少图像中的噪声和细节。在图像边沿处理中,高斯模糊可以起到以下几个作用:

  1. 去除噪声:图像中的噪声会导致边沿变得模糊不清,通过应用高斯模糊可以平滑图像并去除噪声,使得边沿更加清晰。

  2. 平滑边缘:在一些图像处理任务中,我们需要平滑边缘以减少不必要的细节。高斯模糊可以模糊边缘,使得边缘之间的过渡更加平滑。

  3. 减少锯齿效应:锯齿效应是指图像中直线或曲线边缘出现明显的锯齿状现象。通过应用高斯模糊可以减少锯齿效应,使得边缘更加平滑。

  4. 边缘保留:在某些情况下,我们希望在平滑图像的同时保留边缘信息。高斯模糊可以通过调整滤波器的大小和标准差来控制平滑程度,从而在一定程度上保留边缘。

三、实现

1、关键代码

# 进行高斯模糊
img_dst = cv2.stackBlur(image, (13, 9))

2、函数原型

cv2.stackBlur是OpenCV库中的一个函数,用于对图像进行堆叠模糊处理。堆叠模糊是一种图像模糊的方法,它通过多次应用模糊滤波器来增加模糊效果。

该函数的语法如下: dst = cv2.stackBlur(src, ksize, dst=None)

参数说明:

  • src:输入图像,可以是单通道或多通道的图像。
  • ksize:模糊核的大小,必须为正奇数。较大的值会增加模糊程度。
  • dst:可选参数,输出图像。

该函数会对输入图像进行堆叠模糊处理,并返回处理后的图像。可以通过调整ksize的值来控制模糊程度。

3、效果对比

3.1高斯模糊前

3.2高斯模糊后

四、结论

高斯模糊可以通过平滑过渡图像边缘,从而使阈值判断更加有效,最终捕捉到更加明显的图像边缘。

五、源码

import pyautogui
import cv2
import numpy as np
import time
import os
GAUSSIAN_EN = 1
# 获取屏幕尺寸
screen_width, screen_height = pyautogui.size()
screen_size = (1920, 1080)
# cv2.namedWindow("Screen Capture", cv2.WINDOW_NORMAL)
# cv2.resizeWindow("Screen Capture", screen_size // 2, screen_size // 2)image = cv2.imread('image.jpg')
# 进行高斯模糊
if GAUSSIAN_EN:img_dst = cv2.stackBlur(image, (13, 9))
else:img_dst = image
# 将截图转换为OpenCV图像格式
gray = cv2.cvtColor(img_dst, cv2.COLOR_RGB2GRAY)
# 在这里进行OpenCV图像处理和分析
# ...
threshold1 = 24
threshold2 = 40
edges = cv2.Canny(gray, threshold1, threshold2, 300)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)result = np.zeros_like(image)
thickness = 1
cv2.drawContours(result, contours, -1, (255, 255, 255), thickness)
cv2.imshow('Result', result)
cv2.waitKey(0)
# cv2.rectangle(image, (x, y), (x + width, y + height), (0, 0, 255), 2)
# 显示图像
# cv2.imshow("Screen Capture", image)
cv2.destroyAllWindows()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在【Cencos7】中安装【Nacos】并适配【PostgreSQL】数据库

在【Cencos7】中安装【Nacos-2.3.0】并适配【PostgreSQL】数据库 安装JDK wget命令下载: wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz解压 tar -xzvf jdk-7u80-linux-x64.tar.gz将解压后的目录移动到/opt下 sudo mv jdk…

二叉树遍历算法和应用

二叉树是指度为 2 的树。它是一种最简单却又最重要的树,在计算机领域中有这广泛的应用。 二叉树的递归定义如下:二叉树是一棵空树,或者一棵由一个根节点和两棵互不相交的分别称为根节点的左子树和右子树所组成的非空树,左子树和右…

【前端】解决前端图表大数据配色难题:利用HSL动态生成颜色方案

解决前端图表大数据配色难题:利用HSL动态生成颜色方案 在数据可视化项目中,尤其是当需要绘制包含大量数据点的图表时,一个常见的挑战是如何为每个数据点分配一个独特而又视觉上容易区分的颜色。使用固定的颜色列表可能在数据点数量超过列表限…

信号完整性之特性阻抗那些事儿

原文来自微信公众号:工程师看海,与我联系:chunhou0820 看海原创视频教程:《运放秘籍》 大家好,我是工程师看海。 我们经常说控制阻抗,这个阻抗是什么意思呢? 信号在传输线中,是一步…

使用Android Studio制作一个蓝牙软件 ---(一)

一、创建项目(项目名称---BluetoothActivity) 二、创建HomeActivity页面 1.点击一个文件夹 --- 鼠标右击 --- 新建 --- Acyivity --- Empty Views Activity 三、创建styles.xml 点击 values文件夹 --- 鼠标右击 --- 新建 --- Values Resource File sty…

【数据结构】04串

串 1. 定义2. 串的比较3. 串的存储结构4. 具体实现5. 模式匹配5.1 常规思路实现5.2 KMP模式匹配算法5.2.1 next数组计算5.2.1 代码计算next数组5.2.2 KMP算法实现 1. 定义 串(string)是由零个或多个字符组成的有限序列,又叫字符串。 一般记为s a 1 , a 2 , . . . ,…

NGO-VMD+皮尔逊系数+小波阈值降噪+重构

NGO-VMD皮尔逊系数小波阈值降噪重构 NGO-VMD皮尔逊系数小波阈值降噪重构代码获取戳此处代码获取戳此处 以西储大学轴承数据为例,进行VMD,且采用NGO进行K a参数寻优 并对分解分量计算皮尔逊相关系数筛选含噪声分量,对其进行小波软硬阈值降噪&a…

C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学,今天教学第十篇:Java中Map详解说明。 在 Java 编程中,Map 接口代表了一种键值对的集合,每个键对应一个值。Map 接口提供了一系列操作方法,可以方便地对键值对进行增删改查等操作。本…

模板方法模式:定义算法骨架的设计策略

在软件开发中,模板方法模式是一种行为型设计模式,它在父类中定义一个操作的算法框架,允许子类在不改变算法结构的情况下重定义算法的某些步骤。这种模式是基于继承的基本原则,通过抽象类达到代码复用的目的。本文将详细介绍模板方…

NASA数据集——亚洲夏季季风化学与气候影响项目超高灵敏度气溶胶光谱(UHSAS)数据

ACCLIP_Aerosol_AircraftInSitu_WB57_Data 简介 ACCLIP_Aerosol_AircraftInSitu_WB57_Data 是亚洲夏季季风化学与气候影响项目(ACCLIP)期间收集的原地气溶胶数据。本数据集收录了来自下一代激光质谱仪(PALMS-NG)、单颗粒烟尘光度…

一文读懂Partisia Blockchain,被严重低估的隐私区块链生态

在今年 3 月,隐私公链 Partisia Blockchain 迎来了重要的进展,该生态通证 $MPC 上线了交易所,目前 $MPC 通证可以在 Kucoin、Gate、BitMart、Bitfinex、Bitture 等平台交易,并将在不久后上线 MEXC 平台。 ​ 在上个月上线市场至今…

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令,检查防火墙是否关闭。 步骤2 执行以下命令,关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

【计算机毕业设计】基于微信小程序的开发项目150套(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享200的微信小程序毕业设计,后台用Java开发,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设…

MQ概览及Kafka详解

文章目录 概览MQ优点MQ缺点常见MQ对比JMS消息模型点对点模式发布订阅模式 kafka基础架构发布订阅工作流程生产者生产者文件存储生产者分区策略生产者数据可靠性保证生产者数据一致性保证生产者ack机制ExactlyOnce生产者发送消息流程 消费者消费者分区分配策略消费者消费数据问题…

算法设计与分析实验报告c++实现(TSP问题、哈夫曼编码问题、顾客安排问题、最小生成树问题、图着色问题)

一、实验目的 1.加深学生对贪心算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用贪心算…

streamlit 大模型前段界面

结合 langchain 一起使用的工具,可以显示 web 界面 pip install streamlit duckduckgo-search 运行命令 streamlit run D:\Python_project\NLP\大模型学习\test.py import os from dotenv import load_dotenv from langchain_community.llms import Tongyi load…

matlab学习002-函数及流程控制语句

目录 一,matlab编程基础 1)matlab脚本和函数文件 ①脚本文件 ②函数文件 2)函数的定义和调用 ①定义 ②调用 3)程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…

Python学习(三)

函数扩展 多返回值 参数扩展 位置参数 注意:传递的参数和定义的参数的顺序及个数必须一致 关键字参数 关键字名称必须和形参名称相同,形参叫name,那么关键字也要写name 不定长参数 缺省参数