1梯度,散度,旋度
梯度:向量。函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
如果现在的纯量场用一座山来表示,纯量值越大的地方越高,反之则越低.经过梯度这个运操作数的运算以后,会在这座山的每一 个点上都算出一个向量,这个向量会指向每个点最陡的那个方向,而向量的大小则代表了这个最陡的方向到底有多陡.
用在图像中最常见就是用来检测图像的边缘啦,不过那时候是离散函数,所以用的是差分呐!
散度:是一个值;散度的作用对像是向量场,如果现在我们考虑任何一个点(或者说这个点的周围极小的一块区域),在这个点上,向 量场的发散程度,如果是正的,代表这些向量场是往外散出的.如果是负的,代表这些向量场是往内集中的.
用水流来解释,散度的物理意义可以叙述为:
如果一点的散度大于0,那么在这一点有一个水龙头不断往外冒水(称为源点)
如果一点的散度小于0,那么在这一点有一个下水道,总有一些水只进不出(称为汇点)
如果一点的散度等于0,那么请放心,在这个点周围的小区域里,单位时间进来多少水就出去多少水。
旋度: 运算的对像是向量,运算出来的结果会是向量。
2.2. 散度在图像去噪中的应用
最普遍的就是锐化时使用的拉普拉斯算子,本质是将周围几个单元的灰度变化率的变化趋势区分开来,从而达到区分边缘的效果。数字图像处理里的散度不能按场论中的散度来理解,当成一种数学运算方法就行。
https://www.zhihu.com/question/24591127
这段代码是matlab 上对上面方程的验证,以及可以看看如何求梯度、旋度。
% 生成7×7整数型的矩阵
z = randi(7,7);
[zx,zy] = gradient(z);
div = divergence(zx,zy);
[zx_x,zx_y] = gradient(zx);
[zy_x,zy_y] = gradient(zy);
% divergence(zx,zy) =zx_x + zy_y
res = zx_x + zy_y - divergence(zx,zy);
3.kron函数(卷积)
格式 C=kron (A,B) %A为m×n矩阵,B为p×q矩阵,则C为mp×nq矩阵。
kron即为Kronecker积,所谓Kronecker积是一种矩阵运算,其定义可以简单描述成:
X与Y的Kronecker积的结果是一个矩阵:
X11*Y X12*Y … X1n*Y
X21*Y X22*Y … X2n*Y
……
Xm1*Y Xm2*Y … Xmn*Y
如实例:
上面这个代码是一种用途,特此记下来。
3.np.clip()h函数
例如给定一个区间[0,1],则小于0的将变成0,大于1则变成1. numpy.clip(a,a_min,a_max,a=None)
4 if __name__ == '__main__'的理解
if __name__ == '__main__'
我们简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。