012 OpenCV sobel边缘检测

目录

一、环境

二、soble原理介绍

三、源码实验


一、环境

本文使用环境为:

  • Windows10
  • Python 3.9.17
  • opencv-python 4.8.0.74

二、soble原理介绍

Sobel边缘检测是一种广泛应用于图像处理领域的边缘检测算法,它通过计算图像灰度函数在水平方向和垂直方向的梯度来检测边缘。Sobel算法通过计算邻域像素的加权差值来估计像素点处的梯度大小,从而确定边缘的方向和强度。

Sobel边缘检测算法主要由两个3x3的卷积核组成,一个用于水平方向,一个用于垂直方向。这两个卷积核可以分别计算出图像在水平方向和垂直方向的梯度大小。具体来说,水平卷积核对图像进行卷积运算,得到图像在水平方向上的梯度值;垂直卷积核对图像进行卷积运算,得到图像在垂直方向上的梯度值。然后将这两个梯度值相加,得到每个像素点处的边缘强度。

Sobel边缘检测算法具有以下优点:

  1. 简单易用:Sobel算法实现简单,易于理解和应用。
  2. 效果较好:Sobel算法能够有效地检测出图像中的边缘,并且对噪声有一定的抑制作用。
  3. 方向敏感:Sobel算法能够检测出边缘的方向信息,这对于后续的图像处理和分析非常重要。

然而,Sobel边缘检测算法也存在一些缺点:

  1. 对噪声敏感:Sobel算法对噪声比较敏感,可能会将噪声误判为边缘。
  2. 检测结果受阈值影响:Sobel算法的检测结果受阈值影响较大,选择合适的阈值比较困难。
  3. 计算量大:Sobel算法需要进行两次卷积运算,计算量较大,对于大型图像的处理速度较慢。

在实际应用中,可以根据具体需求选择不同的边缘检测算法。如果需要简单快速地检测边缘,可以选择Sobel算法;如果需要更精确地检测边缘,可以选择Canny算法;如果需要在大规模图像上进行处理,可以选择基于小波变换的边缘检测算法等。

总之,Sobel边缘检测算法是一种经典的边缘检测算法,它具有简单易用、效果较好、方向敏感等优点,但也存在对噪声敏感、计算量大等缺点。在实际应用中,需要根据具体需求选择合适的边缘检测算法。

三、源码实验

cpp 复制代码
import sys
import cv2 as cv

def main():
    window_name = ('Sobel Demo - Simple Edge Detector')
    scale = 1
    delta = 0
    ddepth = cv.CV_16S
    # 读取图片
    src = cv.imread("data/fruits.jpg", cv.IMREAD_COLOR)
    # 高斯平滑,用于降噪
    src = cv.GaussianBlur(src, (3, 3), 0)
    # 转为灰度图
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
    # 利用sobel求解x方向边缘
    # grad_x = cv.Scharr(gray,ddepth,1,0)
    grad_x = cv.Sobel(gray, ddepth, 1, 0, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)
    # 利用sobel求解y方向边缘
    # grad_y = cv.Scharr(gray,ddepth,0,1)
    grad_y = cv.Sobel(gray, ddepth, 0, 1, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)
    
    # grad_x可能有负数,所以需要转为 uint8
    abs_grad_x = cv.convertScaleAbs(grad_x)
    abs_grad_y = cv.convertScaleAbs(grad_y)
    # 将x和y方向的梯度相加
    grad = cv.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0)

    cv.imshow(window_name, grad)
    cv.waitKey(0)
    return 0

if __name__ == "__main__":
    main()
相关推荐
那就摆吧11 分钟前
U-Net vs. 传统CNN:为什么医学图像分割需要跳过连接?
人工智能·神经网络·cnn·u-net·医学图像
深度学习实战训练营22 分钟前
中英混合的语音识别XPhoneBERT 监督的音频到音素的编码器结合 f0 特征LID
人工智能·音视频·语音识别
WADesk---瓜子30 分钟前
用 AI 自动生成口型同步视频,短视频内容也能一人完成
人工智能·音视频·语音识别·流量运营·用户运营
星环科技TDH社区版38 分钟前
AI Agent 的 10 种应用场景:物联网、RAG 与灾难响应
人工智能·物联网
时序之心1 小时前
ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?
人工智能·深度学习·transformer
希艾席帝恩1 小时前
拥抱智慧物流时代:数字孪生技术的应用与前景
大数据·人工智能·低代码·数字化转型·业务系统
Bar_artist1 小时前
离线智能破局,架构创新突围:RockAI与中国AI的“另一条车道”
大数据·人工智能
双向331 小时前
高性能MCP服务器架构设计:并发、缓存与监控
人工智能
weixin_464078071 小时前
机器学习sklearn:处理缺失值
人工智能·机器学习·sklearn
2202_756749691 小时前
04 基于sklearn的机械学习-梯度下降(上)
人工智能·算法·机器学习