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

一、介绍

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

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

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

二、作用

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

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

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

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

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

三、实现

1、关键代码

python 复制代码
# 进行高斯模糊
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高斯模糊后

四、结论

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

五、源码

python 复制代码
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()
相关推荐
星空椰42 分钟前
从零到实战:一套完整的 Python 爬虫技术体系(requests + BeautifulSoup + 正则 + JSON)
爬虫·python·json·beautifulsoup
李昊哲小课2 小时前
Hermes Agent 系统架构设计
人工智能·智能体·hermes agent
一切皆是因缘际会8 小时前
从概率拟合到内生心智:2026 下一代 AI 架构演进与落地实践
人工智能·深度学习·算法·架构
科研前沿8 小时前
镜像视界 CameraGraph™+多智能体:构建自感知自决策的全域空间认知网络技术方案
大数据·运维·人工智能·数码相机·计算机视觉
爱学习的张大8 小时前
具身智能论文问答(2):Diffusion Policy
人工智能
AI科技星8 小时前
全域数学·72分册·射影原本 无穷维射影几何卷细化子目录【乖乖数学】
人工智能·线性代数·算法·机器学习·数学建模·数据挖掘·量子计算
Chef_Chen8 小时前
论文解读:MemOS首次把记忆变成大模型的一等公民资源,Scaling Law迎来第三条曲线
人工智能·agent·memory
风落无尘8 小时前
《智能重生:从垃圾堆到AI工程师》——第四章 变化的艺术
人工智能·线性代数·算法
七颗糖很甜8 小时前
电离层对地基雷达测量精度的影响分析与校正方法
python
发哥来了9 小时前
AI视频生成模型选型指南:五大核心维度对比评测
大数据·人工智能·机器学习·ai·aigc