梯度(gradient)是函数在改点变化最大的值,在用Matlab做图像处理中,梯度可有以下公式来计算:
[Fx,Fy]=gradient(F)
1.F是一维矩阵,有Fx=gradient(F,L),L为俩元素之间的距离。
2.F是二维矩阵,(Fx,Fy)=gradient(F,Lx,Ly),Lx,Ly表示各自方向上各点间的距离。
3.F是三维矩阵,(Fx,Fy,Fz)=gradient(F,Lx,Ly,Lz),Lx,Ly,Lz表示各自方向上各点间的距离。
这样写还是比较抽象,举一个二维矩阵的例子
>> A=[1 8 6;4 3 6;7 8 5]
A =
1 8 6
4 3 6
7 8 5
Fx =
7.0000 2.5000 -2.0000
-1.0000 1.0000 3.0000
1.0000 -1.0000 -3.0000
Fy =
3.0000 -5.0000 0
3.0000 0 -0.5000
3.0000 5.0000 -1.0000
其计算方法很简单,Fx的第一列为原矩阵第二列减去第一列,第二列等于原矩阵的第三列减去第二列,算出的结果每个元素除二,第三列为原矩阵最后两列的差值。
同理,Fy就变成行的运算。
tips:第一行/列和最后一行/列计算时不需要除二,中间的行/列除二运算。