OpenCV Sobel算子解析笔记

文章详细介绍了Sobel算子的数学原理,包括定义、公式推导和高阶Sobel算子的概念。它用于获取图像的一阶梯度,常用于边缘检测。文章还探讨了Sobel算子在OpenCV中的实现,涉及核心代码和计算过程。

1. Sobel算子数学原理

1.1 Sobel算子定义

Sobel \text{Sobel} Sobel算子:是计算机视觉领域的一种重要处理方法,主要用于获取数字图像的一阶梯度。该算子包含两组 3 × 3 3\times 3 3×3矩阵,将分别将其与图像作平面卷积,可得到图像 x x x方向及 y y y方向一阶梯度:
G x = [ − 1 0 1 − 2 0 2 − 1 0 1 ] ∗ I , G y = [ − 1 − 2 − 1 0 0 0 1 2 1 ] ∗ I \mathbf{G}_x=\begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix}*\mathbf{I},\mathbf{G}_y=\begin{bmatrix}-1&-2&-1\\0&0&0\\1&2&1\end{bmatrix}*\mathbf{I} Gx= 121000121 I,Gy= 101202101 I

1.2 Sobel算子公式推导

我们考察图像中某 1 1 1个像素点 Z 5 \text{Z}_5 Z5及其领域的 8 8 8个像素点,如下图所示:

像素邻域

对于给定领域方向梯度矢量 g \mathbf{g} g的幅度为:
∣ g ∣ = 像素灰度差分 像素距离 |\mathbf{g}|=\frac{像素灰度差分}{像素距离} g=像素距离像素灰度差分
Sobel \text{Sobel} Sobel算子所定义的像素距离为城市距离,如下图所示:

像素距离.png

城市距离:在数字栅格中,如果只允许横向和纵向移动,城市距离表示从起点移动到终点所需的最少的步数。

关于像素点 Z 5 \text{Z}_5 Z5的方向梯度矢量,可对其 8 8 8领域的水平、垂直和 2 2 2个对角共计 4 4 4个方向对的梯度加权求和:
G = ( Z 3 − Z 7 ) 4 ∗ [ 1 1 ] + ( Z 1 − Z 9 ) 4 ∗ [ − 1 1 ] + ( Z 2 − Z 8 ) 2 ∗ [ 0 1 ] + ( Z 3 − Z 7 ) 2 ∗ [ 1 0 ] \mathbf{G}=\frac{(\text{Z}_3-\text{Z}_7)}{4}*\begin{bmatrix}1&1\end{bmatrix}+\frac{(\text{Z}_1-\text{Z}_9)}{4}*\begin{bmatrix}-1&1\end{bmatrix}+\frac{(\text{Z}_2-\text{Z}_8)}{2}*\begin{bmatrix}0&1\end{bmatrix}+\frac{(\text{Z}_3-\text{Z}_7)}{2}*\begin{bmatrix}1&0\end{bmatrix} G=4(Z3Z7)[11]+4(Z1Z9)[11]+2(Z2Z8)[01]+2(Z3Z7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值