雜記(梯度,散度,旋度)// kron函數 //numpy.clip()函數// if __name__ == '__main__'

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__' 我們簡單的理解就是: 如果模塊是被直接運行的,則代碼塊被運行,如果模塊是被導入的,則代碼塊不被運行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章