-
梯度介紹
來自 第七節 方向導數與梯度 http://netedu.xauat.edu.cn/jpkc/netedu/jpkc/gdsx/homepage/5jxsd/51/513/5308/530807.htm
如何直觀形象的理解方向導數與梯度以及它們之間的關系? - 馬同學的回答 - 知乎 https://www.zhihu.com/question/36301367/answer/156102040
首先介紹邊緣檢測中用到的高等數學原理---梯度。介紹梯度,離不開方向導數。
- 方向導數
顧名思義,方向導數就是某個方向上的導數。
什么是方向:

函數
在這個方向上的圖像:

我們知道:

函數
的
點在這個方向上也是有切線的,其切線的斜率就是方向導數:

- 梯度
梯度:是一個矢量,它的方向上的方向導數最大,它的大小正好是此最大方向導數。
梯度的數學定義

簡單總結下:
- 方向導數是各個方向上的導數
- 偏導數連續才有梯度存在
- 梯度的方向是方向導數中取到最大值的方向,梯度的值是方向導數的最大值
2. 邊緣檢測
《經典邊緣檢測算子比較》 張麗 南京信息工程大學
梯度與Roberts、Prewitt、Sobel、Lapacian算子 - CSDN博客 http://blog.csdn.net/swj110119/article/details/51777422
圖像的邊緣是圖像最基本的特征之一。所謂邊緣(或邊沿)是指周圍像素灰度有跳躍性變化或“屋頂”變化的那些像素的集合。邊緣是圖像局部強度變化最明顯的地方,它主要存在於目標與目標、目標與背景、區域與區域之間,因此它是圖像分割依賴的重要特征。
從本質上說,圖像邊緣是圖像局部特性不連續性(灰度突變、顏色突變、紋理結構突變等)的反應,它標志着一個區域的終結和另一個區域的開始。
邊緣檢測是所有基於邊界分割的圖像分析方法的第一步。
檢測出的邊緣並不等同於實際目標的真實邊緣。由於圖像數據時二維的,而實際物體是三維的,從三維到二維的投影必然會造成信息的丟失,再加上成像過程中的光照不均和噪聲等因素的影響,使得有邊緣的地方不一定能被檢測出來,而檢測出的邊緣也不一定代表實際邊緣。
圖像的邊緣有方向和幅度兩個屬性,沿邊緣方向像素變化平緩,垂直於邊緣方向像素變化劇烈。邊緣上的這種變化可以用微分算子檢測出來,通常用一階或兩階導數來檢測邊緣。一階導數認為最大值對應邊緣位置,而二階導數則以過零點對應邊緣位置。

圖像的梯度可以用一階導數和二階偏導數來求解。但圖像是離散的,對一幅圖像的求導相當於對一個面求導。對圖像的操作,我們采用模板對原圖像進行卷積運算,從而達到我們想要的效果。而獲取一幅圖像的梯度就轉化為:模板(Roberts、Prewitt、Sobel、Lapacian算子)對原圖像進行卷積,不過這里的模板並不是隨便設計的,而是根據數學中求導理論推導出來的。
- Roberts算子
梯度的模為
在圖像處理中,實際我們用
和
來表示兩個偏導數
故,梯度的模可以表示為:
因為平方和平方根需要大量的計算開銷,所以使用絕對值來近似梯度幅值:
一般我們常用對角線方向的像元計算梯度

- Prewitt和Sobel算子
在3*3模板中:
定義水平、垂直和兩對角線方向的梯度:
該定義下的算子稱之為Prewitt算子: 
Sobel算子是在Prewitt算子的基礎上改進的,在中心系數上使用一個權值2,相比較Prewitt算子,Sobel模板能夠較好的抑制(平滑)噪聲。
計算公式為:
Sobel算子:
上述所有算子都是通過求一階導數來計算梯度的,用於線的檢測,在圖像處理中,通常用於邊緣檢測。在圖像處理過程中,除了檢測線,有時候也需要檢測特殊點,這就需要用二階導數進行檢測。
