圖像其實就是二元函數 $f(x,y)$,只不過是離散的,圖像梯度就是這個二元離散函數的偏導。計算圖像梯度是一個一個像素點求的。
連續二元函數的偏導數為
$$\frac{\partial f(x,y)}{\partial x} = \lim_{\Delta x\rightarrow 0}\frac{f(x + \Delta x, y) - f(x, y)}{\Delta x} \\
\frac{\partial f(x,y)}{\partial y} = \lim_{\Delta y\rightarrow 0}\frac{f(x, y + \Delta y) - f(x, y)}{\Delta y}$$
但是圖像是離散函數,$\Delta x$ 沒有辦法趨於 $0$,最小只能是間隔 $1$,因此使用有限差分來近似計算梯度。因此,圖像偏導變成了如下形式:
$$\frac{\partial f(x,y)}{\partial x} = f(x + 1, y) - f(x, y) \\
\frac{\partial f(x,y)}{\partial y} = f(x, y + 1) - f(x, y)$$
$x,y$ 表示某個像素的坐標,除了上面這個前向差商外,還可以采用后向差商,中心差商來計算梯度。比如采用中心差商:
$$\frac{\partial f(x,y)}{\partial x} = \frac{f(x + 1, y) - f(x - 1, y)}{2} \\
\frac{\partial f(x,y)}{\partial y} = \frac{f(x, y + 1) - f(x, y - 1)}{2}$$
寫成一維卷積的形式等於與 $[-1, 0, 1]$ 這樣一個濾波核作卷積。
對於離散的圖像來說,一階微分的數學表達相當於兩個相鄰像素的差值,根據選擇的梯度算子不同,效果可能有所不同,但是基本原理不會變化。
比如 sobel 算子也可以計算梯度,本質也是通過差分計算,但是用到了前后向序列的信息,同時為每個元素附加權重。