方向导数与梯度
最近用到sobel算子,复习了梯度的定义与计算,做简要记录。
梯度的定义
百度:梯度是一个向量,标识某一函数在该点处的方向导数沿着该方向取得的最大值,表示该点处沿着梯度方向变换最快,变化率最高。
问题
其中包含的问题是梯度方向如何确定?即如何确定因变量变化率最快的方向。当初在偏微分中学到的是根据自变量偏导组成的归一化向量确定变化率最高的方向导数作为梯度方向,但是为什么自变量偏导归一化向量确定了梯度方向?
方向导数
在一元函数
y
=
f
(
x
)
y=f(x)
y=f(x)中,
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)处的导数表示因变量
y
y
y在自变量
Δ
x
\Delta x
Δx范围内的变化率,计算为
Δ
y
Δ
x
\frac{\Delta y}{\Delta x}
ΔxΔy。在二元函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)中,显然
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0)处的导数应该是因变量
z
z
z在
Δ
x
,
Δ
y
\Delta x , \Delta y
Δx,Δy范围内的变化率,但是不同的
x
,
y
x,y
x,y变化量会导致不同的变化率,因此引入了方向向量的概念,即由
Δ
x
,
Δ
y
\Delta x , \Delta y
Δx,Δy构成模为1(变化率理解为单位距离内的增量)的方向向量
I
(
Δ
x
,
Δ
y
)
I(\Delta x , \Delta y)
I(Δx,Δy),如图所示,在
x
o
y
xoy
xoy平面上任意方向向量,
Δ
x
=
I
c
o
s
(
α
)
,
Δ
y
=
I
s
i
n
(
α
)
\Delta x =Icos(\alpha) , \Delta y=Isin(\alpha)
Δx=Icos(α),Δy=Isin(α),那么此时因变量
z
z
z的变化率可以计算为:
Δ
z
Δ
x
∗
c
o
s
(
α
)
∗
I
+
Δ
z
Δ
y
∗
s
i
n
(
α
)
∗
I
\frac{\Delta z}{\Delta x}*cos(\alpha)*I+\frac{\Delta z}{\Delta y}*sin(\alpha)*I
ΔxΔz∗cos(α)∗I+ΔyΔz∗sin(α)∗I
这里其实就是偏导向量和方向向量的内积,即:
(
Δ
z
Δ
x
,
Δ
z
Δ
y
)
∗
(
c
o
s
(
α
)
,
s
i
n
(
α
)
)
(\frac{\Delta z}{\Delta x},\frac{\Delta z}{\Delta y})*(cos(\alpha),sin(\alpha))
(ΔxΔz,ΔyΔz)∗(cos(α),sin(α))
根据内积的定义,两向量同向时相似度最高,内积最大故偏导向量与方向向量同向时因变量
z
z
z的变化率最高,即偏导向量方向为梯度方向。