OpenCV—边缘检测

本文介绍了OpenCV中用于边缘检测的Sobel和Canny算法。首先阐述了边缘检测的基本概念,然后详细讲解了Sobel算子的原理,通过3x3卷积核进行图像求导。接着,深入探讨了Canny边缘检测的四个步骤:高斯滤波、计算梯度强度和方向、非极大值抑制以及双阈值算法。文章提供了算法的数学解释和实际应用,并给出了基于OpenCV的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV—边缘检测

1 什么是边缘?

边缘是图像强度函数快速变化的地方

2 如何检测边缘?

为了检测边缘,我们需要检测图像中的不连续性,可以使用导数来检测不连续性。

3 算法理论介绍与推荐

3.1 Sobel算子

我们可以使用3×33 \times 33×3 的卷积核来进行图像求导:

$$
{\displaystyle \mathbf {G}’{y}={ \begin{bmatrix}+1&+2&+1\0&0&0\-1&-2&-1\end{bmatrix}}*\mathbf {I} \quad {\mbox{和}}\quad \mathbf{G}’{x}={\begin{bmatrix}+1&0&-1\+2&0&-2\+1&0&-1\end{bmatrix}}*\mathbf {I} }

其中$ \mathbf {I}表示原图片,表示原图片,\mathbf {G}’{x}和和\mathbf {G}’{y}分别表示沿图片水平和竖直方向上的变化,分别表示沿图片水平和竖直方向上的变化,沿 * $表示卷积操作

【例1】下面以Sobel算子为例讲述如何计算梯度

x和y方向的Sobel算子分别为:

Hij=12πσ2exp⁡(−(i−(k+1))2+(j−(k+1))22σ2);1≤i,j≤(2k+1) {\displaystyle H_{ij}={\frac {1}{2\pi \sigma ^{2}}}\exp \left(-{\frac {(i-(k+1))^{2}+(j-(k+1))^{2}}{2\sigma ^{2}}}\right);1\leq i,j\leq (2k+1)} Hij=2πσ21exp(2σ2(i(k+1))2+(j(k+1))2);1i,j(2k+1)

若图像G\mathbf {G}G中一个3x3的窗口为A,要计算梯度的像素点为e,则和Sobel算子进行卷积之后,像素点e在x和y方向的梯度值分别为:

\begin{equation}\begin{aligned}{G}’{x}=G{x} * A=\left[\begin{array}{ccc}-1 & 0 & 1 \-2 & 0 & 2 \-1 & 0 & 1\end{array}\right] *\left[\begin{array}{ccc}a & b & c \d & e & f \g & h & i\end{array}\right]=\operatorname{sum}\left(\left[\begin{array}{ccc}-a & 0 & c \-2 d & 0 & 2 f \-g & 0 & i\end{array}\right]\right) \{G}’{y}=G{y} * A=\left[\begin{array}{ccc}1 & 2 & 1 \0 & 0 & 0 \-1 & -2 & -1\end{array}\right] *\left[\begin{array}{ccc}a & b & c \d & e &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值