非等向性擴散

在影像處理及電腦視覺領域中，**非等向性擴散**（）是一項用來減少影像雜訊但卻不會影響到影像中較重要成分的技術，像是邊界、線條或者影像中較明顯的細節。一般影像擴散處理是將原始影像與二維高斯濾波器進行卷積，這種擴散處理是線性且具有空間不變性的轉換。而非等向性擴散處理則是會根據影像產生區域性的濾波器，再將原始影像與產生的濾波器進行卷積，所以非等向性擴散是一種非線性且不具有空間不變性的轉換。

Perona和Malik在1987年提出不具有空間不變性的濾波器時，其原始的概念是等向性擴散但會根據影像內容產生不同的濾波器，這也使得在靠近邊界的區域其產生的濾波器會很類似狄拉克δ函數，讓邊界及影像中較重要的結構能夠在經過擴散處理後還能保留下來。而當初Perona和Malik稱之為非等向性擴散，即使其產生的區域性濾波器是具有等向性的，而當時這種處理又被稱為不均勻擴散、非線性擴散及Perona-Malik擴散。而實際上的非等向性擴散則是根據邊界及結構的方向而產生非等向性的區域性濾波器，這種方法又被稱為shape-adapted smoothing或coherence enhancing diffusion。其產生的影像可以同時進行平滑化並保留原本影像的結構，而這類方法所使用的擴散方程式通常是根據在原始影像中的位置及原始影像的像素值所產生。

雖然其結果是由原始影像及區域性濾波器卷積所產生，但實際應用上這樣會需要大量的運算，所以通常會用近似法來進行加速，也就是說每一張新的影像是由上一張產生的影像套用非等向性擴散所產生。整體來說，非等向性擴散是一種疊代性的處理，其產生的結果會越來越平滑直到達到所需要的結果。

## 定義

 \Omega \subset \mathbb{R}^2  代表的是平面上的子集合，且  I(\cdot,t): \Omega \rightarrow \mathbb{R}  是一組灰階影像，則非等向性擴散可以定義為
:  \frac{\partial I}{\partial t} = \mathrm{div} \left( c(x,y,t) \nabla I \right)= \nabla c \cdot \nabla I + c(x,y,t) \Delta I 
 \Delta  代表的是拉普拉斯運算子， \nabla  代表的是梯度運算子， \mathrm{div}(\dots)  則是散度運算子，而  c(x,y,t)  代表的是擴散係數.   c(x,y,t)  控制擴散的程度，而且通常是根據影像梯度所產生的方程式，所以能夠保存原本影像中的邊界。 Pietro Perona 和 Jitendra Malik 在1990年最早提出非等向性擴散的概念，且提出了兩種計算擴散係數的方程式：
:  c\left(\|\nabla I\|\right) = e^{-\left(\|\nabla I\| / K\right)^2} 
和
:  c\left(\| \nabla I\| \right) = \frac{1}{1 + \left(\frac{\|\nabla I\|}{K}\right)^2}  
常數K控制方程式對於邊界的敏感度，而其值通常是根據影像中的噪音所產生，或者根據實驗所產生。

## 動機

若  M  代表的是平滑的影像，則上面的擴散方程式就可以被轉換成用梯度下降法尋找方程式  E: M \rightarrow \mathbb{R}  的最小能量，而   E: M \rightarrow \mathbb{R}  則定義為
:  E[I] = \frac{1}{2} \int_{\Omega} g\left( \| \nabla I(x)\|^2 \right)\, dx 
其中  g:\mathbb{R} \rightarrow \mathbb{R}  是一個實數函數，其代表的是擴散係數之間的關係。對於可微函數  h 

:  \begin{align}
\left.\frac{d}{dt} \right|_{t=0} E[I + th] &= \frac{d}{dt} \big|_{t=0}\frac{1}{2} \int_{\Omega} g\left( \| \nabla (I+th)(x)\|^2 \right)\, dx \\
                                   &= \int_{\Omega} g'\left(\| \nabla I(x)\|^2 \right) \nabla I \cdot \nabla h\, dx  \\
                                   &= -\int_{\Omega} \mathrm{div}(g'\left( \| \nabla I(x)\|^2 \right) \nabla I)  h\, dx
\end{align} 

假設  \nabla E_I 代表 E 對  L^2(\Omega, \mathbb{R}) 內積的梯度，則
:  \nabla E_I = - \mathrm{div}(g'\left( \| \nabla I(x)\|^2 \right) \nabla I) 

因此，其梯度下降法的方程式可以表示成

:  \frac{\partial I}{\partial t} = - \nabla E_I =  \mathrm{div}(g'\left( \| \nabla I(x)\|^2 \right) \nabla I) 
我們假設  c = g'  就可以得到非等向性方程式了。

## 正規化
修正後的Perona-Malik模型，又被成為正規化的P-M方程式，其未知部分在非線性部分與高斯函數進行卷積，得到
:  \frac{\partial I}{\partial t}=\mathrm{div} \left(c(|DG_{\sigma} * I|)\nabla I \right) 
其中   G_{\sigma}=C{\sigma}^{-\left(1/2\right)}exp\left(-|x|^2/4{\sigma}\right).

正規化雖然可以增加其穩定性，但同時也會產生模糊效果，所以要在事前得知噪音的程度才能夠決定正規化的所需要的常數。

## 應用

非等向性擴散可以用來減少數位影像的雜訊而不會模糊其邊界。如果在固定的擴散係數下，非等向性擴散方程式所減少的heat equation與高斯模糊是相同的，但這樣會在消除雜訊時同時模糊邊界。如果擴散係數是根據邊界偵測方程式來決定，像是Perona Malik 模型的話，其結果會在區域內進行擴散而且不會使其超過較強的邊界，因此在移除雜訊後，影像中的邊界及結構仍可以保留下來。

除了移除雜訊之外，非等向性擴散也可以用於邊界偵測。只要根據邊界偵測方程式來進行多次遞迴的非等向性擴散，其最終結果影像會趨向於剩下一個一個的色塊，而相鄰色塊之間的區域則會被偵測為邊界。

## 延伸閱讀

* 雙邊濾波器
* 邊緣檢測
* 熱傳導方程式
* 噪點

## 參考資料

## 外部連結
* Mathematica PeronaMalikFilter  function.
* IDL nonlinear anisotropic diffusion package(edge enhancing and coherence enhancing): http://www2.warwick.ac.uk/fac/sci/physics/research/cfsa/people/yuan/studytracking/computation/idllib/