梯度算子:是一类用于图像边缘检测和特征提取的算法,它们基于图像灰度值的变化来计算图像中各个位置的梯度信息,用于找到图像中明显的边缘或特征。对于函数图像
f
(
x
,
y
)
f(x,y)
f(x,y),它在
(
x
,
y
)
(x,y)
(x,y)处的梯度为
G
[
f
(
x
,
y
)
]
=
[
∂
f
∂
x
∂
f
∂
y
]
T
G[f(x, y)]=\left[\begin{array}{ll}\frac{\partial f}{\partial x} & \frac{\partial f}{\partial y}\end{array}\right]^{T}
G[f(x,y)]=[∂x∂f∂y∂f]T
用梯度的幅度来代替,则为
G
[
f
(
x
,
y
)
]
=
[
(
∂
f
∂
x
)
2
+
(
∂
f
∂
y
)
2
]
1
2
或
G
[
f
(
x
,
y
)
]
=
∣
∂
f
∂
x
∣
+
∣
∂
f
∂
y
∣
G[f(x, y)]=\left[\left(\frac{\partial f}{\partial x}\right)^{2}+\left(\frac{\partial f}{\partial y}\right)^{2}\right]^{\frac{1}{2}} \text { 或 } G[f(x, y)]=\left|\frac{\partial f}{\partial x}\right|+\left|\frac{\partial f}{\partial y}\right|
G[f(x,y)]=[(∂x∂f)2+(∂y∂f)2]21或G[f(x,y)]=∂x∂f+∂y∂f
离散的数字矩阵,用差分来代替微分,其中
g
(
x
,
y
)
g(x,y)
g(x,y)称为梯度图像
∂
f
∂
x
=
Δ
f
Δ
x
=
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
x
+
1
−
x
=
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
∂
f
∂
y
=
Δ
f
Δ
y
=
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
y
+
1
−
y
=
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
g
(
x
,
y
)
=
∣
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
∣
+
∣
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
∣
\begin{array}{l}\frac{\partial f}{\partial x}=\frac{\Delta f}{\Delta x}=\frac{f(x+1, y)-f(x, y)}{x+1-x}=f(x+1, y)-f(x, y) \\\frac{\partial f}{\partial y}=\frac{\Delta f}{\Delta y}=\frac{f(x, y+1)-f(x, y)}{y+1-y}=f(x, y+1)-f(x, y) \\g(x, y)=|f(x+1, y)-f(x, y)|+|f(x, y+1)-f(x, y)|\end{array}
∂x∂f=ΔxΔf=x+1−xf(x+1,y)−f(x,y)=f(x+1,y)−f(x,y)∂y∂f=ΔyΔf=y+1−yf(x,y+1)−f(x,y)=f(x,y+1)−f(x,y)g(x,y)=∣f(x+1,y)−f(x,y)∣+∣f(x,y+1)−f(x,y)∣
B:边缘检测
对梯度图像进行阈值化,检测局部变化极值
固定边界灰度:
g
(
x
,
y
)
=
{
L
G
G
[
f
(
x
,
y
)
]
≥
T
f
(
x
,
y
)
其他
g(x, y)=\left\{\begin{array}{lc}L_{G} & G[f(x, y)] \geq T \\f(x, y) & \text { 其他 }\end{array}\right.
g(x,y)={LGf(x,y)G[f(x,y)]≥T其他
突出边界:
g
(
x
,
y
)
=
{
G
[
f
(
x
,
y
)
]
G
[
f
(
x
,
y
)
]
≥
T
f
(
x
,
y
)
其他
g(x, y)=\left\{\begin{array}{lc}G[f(x, y)] & G[f(x, y)] \geq T \\f(x, y) & \text { 其他 }\end{array}\right.
g(x,y)={G[f(x,y)]f(x,y)G[f(x,y)]≥T其他
二值化边界与背景:
g
(
x
,
y
)
=
{
L
G
G
[
f
(
x
,
y
)
]
≥
T
L
B
其他
g(x, y)=\left\{\begin{array}{lc}L_{G} & G[f(x, y)] \geq T \\L_{B} & \text { 其他 }\end{array}\right.
g(x,y)={LGLBG[f(x,y)]≥T其他
Robert算子:是一种边缘检测算子,其原理基于图像中像素值的差异。该算子的实现使用了两个
2
×
2
2 \times 2
2×2 的卷积核
G
x
G_x
Gx 和
G
y
G_y
Gy,分别计算像素点
(
x
,
y
)
(x,y)
(x,y) 和
(
x
+
1
,
y
+
1
)
(x+1,y+1)
(x+1,y+1) 之间的灰度差异。具体来说,
G
x
G_x
Gx 和
G
y
G_y
Gy 的取值如下
E
(
x
,
y
)
=
(
I
(
x
,
y
)
∗
G
x
)
2
+
(
I
(
x
,
y
)
∗
G
y
)
2
E(x, y)=\sqrt{\left(I(x, y) * G_{x}\right)^{2}+\left(I(x, y) * G_{y}\right)^{2}}
E(x,y)=(I(x,y)∗Gx)2+(I(x,y)∗Gy)2
最终得到的边缘强度
E
E
E 可以用来检测图像中的边缘,边缘通常在
E
E
E 取得较大值的地方出现。此外,为了提高计算效率,通常也可以使用预先计算好的卷积核来实现 Robert 算子
对于一个灰度图像
I
I
I,对其在
x
x
x方向应用Sobel算子,可以得到一个新的图像
G
x
G_x
Gx,其中每个像素的值表示其在
x
x
x方向上的梯度大小,即
G
x
(
i
,
j
)
=
∑
m
=
−
1
1
∑
n
=
−
1
1
H
x
(
m
+
2
,
n
+
2
)
I
(
i
+
m
,
j
+
n
)
G_{x}(i, j)=\sum_{m=-1}^{1} \sum_{n=-1}^{1} H_{x}(m+2, n+2) I(i+m, j+n)
Gx(i,j)=m=−1∑1n=−1∑1Hx(m+2,n+2)I(i+m,j+n)
类似地,对图像
I
I
I在
y
y
y方向应用Sobel算子,可以得到一个新的图像
G
y
G_y
Gy,其中每个像素的值表示其在
y
y
y方向上的梯度大小,即
G
y
(
i
,
j
)
=
∑
m
=
−
1
1
∑
n
=
−
1
1
H
y
(
m
+
2
,
n
+
2
)
I
(
i
+
m
,
j
+
n
)
G_{y}(i, j)=\sum_{m=-1}^{1} \sum_{n=-1}^{1} H_{y}(m+2, n+2) I(i+m, j+n)
Gy(i,j)=m=−1∑1n=−1∑1Hy(m+2,n+2)I(i+m,j+n)
最终的梯度图像
G
G
G可以通过
G
x
G_x
Gx和
G
y
G_y
Gy的平方和再开方得到
G
(
i
,
j
)
=
G
x
(
i
,
j
)
2
+
G
y
(
i
,
j
)
2
G(i,j)=\sqrt{ G_{x}(i,j)^{2}+G_{y}(i,j)^{2} }
G(i,j)=Gx(i,j)2+Gy(i,j)2
Prewitt算子:是一种经典的图像边缘检测算子,用于检测图像中的水平和垂直边缘。它是一种离散型微分算子,通过对图像像素值的梯度计算来提取边缘信息。对于一个灰度图像
I
I
I,Prewitt算子分别对图像的水平和垂直方向计算梯度,得到两个梯度图像
G
x
G_x
Gx 和
G
y
G_y
Gy。这些梯度图像的元素值表示在每个像素处的梯度大小和方向。Prewitt算子的水平和垂直模板分别为
Δ
2
f
=
∂
2
f
∂
x
2
+
∂
2
f
∂
y
2
\Delta^{2} f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}}
Δ2f=∂x2∂2f+∂y2∂2f
其中
∂
2
f
∂
x
2
=
Δ
x
f
(
x
+
1
,
y
)
−
Δ
x
f
(
x
,
y
)
=
[
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
]
−
[
f
(
x
,
y
)
−
f
(
x
−
1
,
y
)
]
=
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
−
2
f
(
x
,
y
)
∂
2
f
∂
y
2
=
Δ
y
f
(
x
,
y
+
1
)
−
Δ
y
f
(
x
,
y
)
=
[
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
]
−
[
f
(
x
,
y
)
−
f
(
x
,
y
−
1
)
]
=
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
−
2
f
(
x
,
y
)
\begin{aligned}\frac{\partial^{2} f}{\partial x^{2}} & =\Delta_{x} f(x+1, y)-\Delta_{x} f(x, y) \\& =[f(x+1, y)-f(x, y)]-[f(x, y)-f(x-1, y)] \\& =f(x+1, y)+f(x-1, y)-2 f(x, y) \\\frac{\partial^{2} f}{\partial y^{2}} & =\Delta_{y} f(x, y+1)-\Delta_{y} f(x, y) \\& =[f(x, y+1)-f(x, y)]-[f(x, y)-f(x, y-1)] \\& =f(x, y+1)+f(x, y-1)-2 f(x, y)\end{aligned}
∂x2∂2f∂y2∂2f=Δxf(x+1,y)−Δxf(x,y)=[f(x+1,y)−f(x,y)]−[f(x,y)−f(x−1,y)]=f(x+1,y)+f(x−1,y)−2f(x,y)=Δyf(x,y+1)−Δyf(x,y)=[f(x,y+1)−f(x,y)]−[f(x,y)−f(x,y−1)]=f(x,y+1)+f(x,y−1)−2f(x,y)