在圖像處理中,散度 div 具體的作用是什麼?


謝邀。回答兩個問題:
1. 什麼是散度?
2. 散度在圖像處理中有何應用

1. 什麼是散度

1.1 散度的定義

散度是作用在向量場上的一個運算元。

用三維空間來舉例,向量場就是在空間每一點處都對應一個三維向量的向量函數:

F(x,y,z)=(v_1(x,y,z),v_2(x,y,z),v_3(x,y,z))^T

比如海洋里,各點在單位時間單位體積中水的流量就是一個三維場,稱為通量場,它等於速度場和密度場的乘積F = u(x,y,z)
ho(x,y,z)

向量場的散度運算元定義為:

div(F)=frac{partial v_1}{partial x}+frac{partial v_2}{partial y}+frac{partial v_3}{partial z}
它是一個標量函數(場),也就是說,在定義空間中每一點的散度是一個值。

1.2 散度的物理意義

用水流來解釋,散度的物理意義可以敘述為:

  • 如果一點的散度大於0,那麼在這一點有一個水龍頭不斷往外冒水(稱為源點)
  • 如果一點的散度小於0,那麼在這一點有一個下水道,總有一些水只進不出(稱為匯點)
  • 如果一點的散度等於0,那麼在這個點周圍的小區域里,單位時間進來多少水就出去多少水。

1.3 數學推導

假設F 是水的通量場,咱們來看看在一點A(x,y,z)的附近到底發生了什麼。以這一點為中心,用一個邊長分別為dx,dy,dz的平行於坐標軸的長方體盒子包圍它,來詳細分析長方體各表面向外跑了多少水。先看盒子在x方向上的兩個面:

第一個面是一個面積為dydz的長方形,它的中心坐標是(x+frac{dx}{2},y,z),這一點的通量是F(x+frac{dx}{2},y,z),用Taylor展開式可以近似為:(v_1,v_2,v_3)^T+frac{dx}{2}(frac{partial v_1}{partial x}, frac{partial v_2}{partial y}, frac{partial v_3}{partial z})^T,又因為這一長方形的外法線方向是(1,0,0),因此這一面在單位時間向外的流量就是二者相乘再乘以面積,由於法線的特殊形式,y、z分量自動消失了:

V_{x+}=(v_1+frac{dx}{2}frac{partial v_1}{partial x})dydz

同理,在x負半軸上的那個面單位時間向外的流量是:

V_{x-}=(-v_1+frac{dx}{2}frac{partial v_1}{partial x})dydz

因此單位時間在x方向上的總的向外的流量是:

V_x=V_{x+}+V_{x-}=frac{partial v_1}{dx}dxdydz

把三個坐標軸向外的流量加在一起,我們就得到了圍繞點A,體積為dxdydz的長方體單位時間向外的流量是V=left( frac{partial v_1}{partial x}+frac{partial v_2}{partial y}+frac{partial v_3}{partial z} 
ight) dxdydz=div(F)dxdydz

  • 因為一個區域是由很多小正方體組成的,給定一個複雜區域D,其單位時間向外的總流量就是把每一個小區域向外的流量加起來,因為內部相互抵消,最終只有區域邊界上的值得以展現,這樣就得到了:
    V(D)=int_{D} div(F)dxdydz=int_{partial D} F cdot dS

其中partial D 是區域D的邊界, dS 是區域邊界上外法線方向的面積元。這個式子的含義是指跑出區域的總水量等於區域中散度的積分,也等於區域邊界上向外的流量的積分。

  • 平均到一個點上,單位時間向的外流量密度就是frac{int div(F) dxdydz}{int dxdydz}=frac{div(F)int dxdydz}{int dxdydz}=div(F)

這是散度的物理意義。

  • 一個區域無論多複雜,只要不包含源點和匯點,其上散度逐點為0,因而區域的總向外流量也為0,1.2中所述的其他情形也可以相應獲得。

1.4 散度與擴散

假設在空間中有一個濃度場(密度場)
ho(x,y,z,t) ,代表在時刻t,在任一點,單位體積的某種物質的分子個數,考慮到物質守恆,物質不會自生自滅,小區域中濃度的變化必然是由於有物質流進流出造成的,這種守恆可以用著名的連續性方程的微分形式來刻畫:

frac{partial 
ho}{partial t}+div(F)=0

其中F是通量。


物質喜歡從高濃度向低濃度運動,並且濃度差越大,運動越劇烈。根據菲克定律(Fick"s laws of diffusion),通量可以用濃度的負梯度來表示,因為某一點的負梯度是濃度下降最快的方向,得到:F=-K
abla
ho。其中梯度定義為
abla 
ho =left( frac{partial 
ho}{partial x}, frac{partial 
ho}{partial y}, frac{partial 
ho}{partial z} 
ight) ,是一個向量場,K是擴散係數,可以是標量,也可以是矩陣,用於調節濃度差與擴散方向之間的關係。


從而連續性方程就變成了擴散方程:

frac{partial 
ho }{partial t}=-div(K cdot -
abla 
ho)=div(K cdot 
abla 
ho)

為了更加直觀地理解,咱先略去擴散係數K,這樣方程就變成了:

frac{partial 
ho }{partial t}=div(
abla 
ho)=
ho_{xx}+
ho_{yy}+
ho_{zz}=Delta 
ho

等式右邊被稱為Laplace運算元,一般用一個正三角來簡寫,你可以用二階導數來理解它。在一小段時間間隔上,這個方程可以離散化為:


ho^{(t+1)}=
ho^{(t)} + dt cdot div(
abla
ho^{(t)})=
ho^{(t)} + dt cdot Delta 
ho ^{(t)}

直接含義就是:在每個小時間段內,如果一個點的二階導數大於0,則把它的濃度增加一些,如果一個點二階導數小於0,則把它的濃度降低一些。因為二階導數大於0的點往往是下凹的點,是局部極小值,因此增加它可以讓局部濃度變平滑;類似地,二階導數小於0的點往往是上凸點,是局部極大值,減少它可以讓濃度中和。

當時間趨向於無窮大時,方程達到穩定,左端為0,那麼我們就得到穩定值滿足的條件:整個區域上散度為0。也可以理解為最終消滅了所有的源點和匯點,場變得光滑了,擴散就終止了。

2. 散度在圖像去噪中的應用

在圖像領域散度運算元主要用在去噪中。假設一幅圖像為I(x,y),它的梯度運算元
abla I=(frac{partial I}{partial x}, frac{partial I}{partial y})^T是一個二維場,那麼我們立即可以用散度運算元構造一個擴散方程:

frac{partial I}{partial t}=div(
abla I)=I_{xx}+I_{yy}

把這個擴散方程作用於圖像就可以去噪了,上面已經解釋了它的作用過程是比較圖像上的每個點,如果一個點值比周圍點低,就增加它,如果比周圍點高,就減少它,實質就是平滑圖像。但是由於它是各向同性的均勻擴散方程,導致圖像上所有細節均勻模糊,去噪效果很糟糕。

Perona和Malik在90年代初發現,由於圖像邊緣往往處在梯度值較大的點處,如果擴散方程在梯度值較大的區域減速擴散,在梯度值較小的區域加速擴散,則可以在著重去噪的同時保護圖像有用細節。他們修改後的擴散方程就是有名的P-M方程:

frac{partial I}{partial t}=div(g(|
abla I|)cdot 
abla I)approx c_1 I_{xi xi }+c_2I_{eta eta }

其中函數g是一個遞減函數,保證隨圖像梯度模值增大函數值遞減,起到只在圖像平滑區域(小梯度點)猛烈擴散的作用。同時,這個方程還可以變形為在圖像局部沿邊緣方向xi 和跨邊緣方向eta 上的兩個一維擴散之和,好的演算法能保證在沿著邊緣方向擴散地多,跨邊緣擴散地少,也就是保證c_1>c_2

,起到在去噪的同時保護邊緣的作用。散度形式和方嚮導數形式的擴散方程是隨後P-M方程改進的兩個主要方向。

基於擴散方程的去噪方法的優點主要有:

  1. 結合微分幾何和物理方程,比較高大上;
  2. 可以控制圖像局部區域的擴散特性,對圖像的控制力強;
  3. 易於推廣到三維和更高維以及流形(比如地球表面)上,方程都不用變。

缺點主要有:

  1. 速度慢,因為是迭代演算法;
  2. 擴散會導致邊緣發生一定程度地移位;
  3. 理論難於往深發展。

最後請欣賞梵高的名畫星空:

各向同性擴散方程對其進行均勻平滑的結果(啥都看不清了):

如果第一幅圖是初始濃度,這一幅圖就是一段時間後的中和了的濃度。最終,圖像成為一張純色畫布,恰好是原始圖像的均值。這一過程在數學上嚴格等價於對圖像做方差不斷增大的高斯卷積。

修改擴散係數後方向可控平滑的結果(只沿著邊緣擴散,保護邊緣):

明顯可以看出,在平滑雜訊(細小顏色雜質)的同時,大邊緣得到了很好地保留。

註:原文關於函數g的敘述有錯,感謝xiao huang的細心觀察!

參考文獻

1. R.P.Feynman et al. 費恩曼物理學講義(第二卷).上海科學技術出版社, 2005.

2. 王大凱, 侯榆青,彭進業. 圖像處理的偏微分方程方法. 科學出版社, 2008.

3. 王小龍,彭國華. 彩色圖像的方向擴散去噪模型研究[J]. 計算機工程與應用, 2013, 49(22): 208-211.


圖像處理中的散度應用太多了,最普遍的就是銳化時使用的拉普拉斯運算元,本質是將周圍幾個單元的灰度變化率的變化趨勢區分開來,從而達到區分邊緣的效果。數字圖像處理里的散度不能按場論中的散度來理解,當成一種數學運算方法就行


你這個概念太過寬泛。散度只是一個運算元,具體看他作用在哪兒。比如在傳統的水平集函數裡面,div(frac{
abla phi}{|
abla phi|}})就是這個水平集邊緣的曲率kappa。例如在連續最大流演算法裡面div代表當前點的一個通量或者流量。要具體問題具體分析。


作為一個前端,看到div還以為是&標籤.......
好吧,把這樓折了吧......


推薦閱讀:

有哪些辦法將圖形轉化為聲音?
清晰度、對比度和銳度之間有什麼區別?
人臉識別相關有哪些重要的國際會議?
使用兩張角度不同的靜態圖像合成連貫的動畫,難度有多大?
如何通過自己的努力進入微軟亞洲研究院工作?

TAG:數學 | 圖像處理 |