從影像辨識進展到影像理解_PART2.使用卷積運算的特徵提取
從使用微分的邊緣特徵量(edge-based feature)提取開始。
邊緣特徵量是表示影像中亮度變化較大部分的特徵量,常用於物體的輪廓提取。
座標(x, y)的亮度變化量可以透過對(x, y)的像素值進行微分來表示。
由於影像座標系統是2維的會有兩個x,y變數,這邊底下會改用偏微分的符號 $\partial$ 就代表 partial,來取代單變數微分的萊布尼茲符號 $\frac{d}{dx}$。
若對 x 軸方向進行微分,可得到水平方向的邊緣特徵量
若對 y 軸方向進行微分,則可得到垂直方向的邊緣特徵量。
座標 $(x, y)$ 的垂直方向邊緣特徵量 $E_x(x, y)$ 與水平方向邊緣特徵量 $E_y(x, y)$ 分別取微分的絕對值。
其公式如 [1.1] 與 [1.2] 所示:
$$E_x(x, y) = \left| \frac{\partial}{\partial x} I(x, y) \right| \simeq | I(x+1, y) - I(x, y) | \quad [1.1]$$
$$E_y(x, y) = \left| \frac{\partial}{\partial y} I(x, y) \right| \simeq | I(x, y+1) - I(x, y) | \quad [1.2]$$
其中 $I(\cdot, \cdot)$ 代表指定座標處的像素值。
由於像素值在相鄰像素之間是離散變化的,因此無法精確計算微分,因為連續函數才能做微分,因此只能用差分來做取代,我們使用離散近似。透過這個方法我們可以為每個像素產生一階導數。邊緣位於一階導數取極值的位置。
連續世界的導數公式定義如下
$$ \frac{\partial I}{\partial x}(x, y) = \lim_{h \to 0} \frac{I(x+h, y) - I(x, y)}{h} $$
但像素一格一個走,沒有 h→0。所以用最常見的前向差分(在函數的某點,使用該點及下一點的函數值來計算變化率)。
以x為變數對整個I影像函數來做偏維,視y為常數。
$$ \frac{\partial I}{\partial x}(x, y) \approx \frac{I(x+1, y) - I(x, y)}{1} $$
因為分母就是 1(1 pixel),通常做邊緣只在乎「大不大」,常把除以 1 省略,得到:
$$ \frac{\partial I}{\partial x}(x, y) \approx I(x+1, y) - I(x, y) $$
再把「變亮」或「變暗」都視為邊緣強度,所以取絕對值:
$$ E_x(x, y) = \left| \frac{\partial I}{\partial x}(x, y) \right| \approx |I(x+1, y) - I(x, y)| $$
同理,$y$ 方向的邊緣特徵量如下:
以y為變數對整個I影像函數來做偏維,視x為常數。
$$ E_y(x, y) = \left| \frac{\partial I}{\partial y}(x, y) \right| \approx |I(x, y+1) - I(x, y)| $$
因此,如式 [1.1] 與式 [1.2] 所示,以近似方式計算微分值。
這個微分值只要使用微分用的核與捲積運算即可輕鬆計算
使用卷積核來達成導數近似(derivative approximation):
圖左.$x$ 軸方向的一階微分核(水平)
圖右.$y$ 軸方向的一階微分核(垂直)
分別呈現垂直方向邊緣特徵提取用的核與水平方向邊緣特徵提取用的核。
微分具有方向性,根據相鄰灰階在x與y方向微分向量,稱之為Gradient(梯度)。表示影像I在(x,y)位置的一次微分(first derivative)。
$$\nabla I = \left[ \frac{\partial I}{\partial x}, \frac{\partial I}{\partial y} \right]$$
處理過程是在計算影像的一次差分,因此被稱為一階微分濾波器。最後將垂直方向與水平方向的邊緣特徵量按照式 [1.3] 進行合成,即可得到一次差分的邊緣特徵量 $E(x, y)$:
$$E(x, y) = \sqrt{E_x(x, y)^2 + E_y(x, y)^2} \quad [1.3]$$
為什麼要用平方和開根號? 主要是為了把一次微分視為梯度向量
$$ \nabla I(x, y) = \left( \frac{\partial I}{\partial x}(x, y), \frac{\partial I}{\partial y}(x, y) \right) $$
邊緣「強度」(magnitude)通常取梯度向量的長度(歐氏距離):
$$ \| \nabla I(x, y) \| = \sqrt{ \left( \frac{\partial I}{\partial x} \right)^2 + \left( \frac{\partial I}{\partial y} \right)^2 } $$
把 $ \frac{\partial I}{\partial x}, \frac{\partial I}{\partial y} $ 用 $E_x, E_y$ 的近似值代入,就得到邊緣特徵量 $E(x, y)$:
$$ E(x, y) = \sqrt{ E_x(x, y)^2 + E_y(x, y)^2 } $$
透過計算對一階微分值進一步微分後的二階微分,也可以提取特徵。
二階微分會提取亮度變化量最大的部分,因此可以排除在一階微分中會被視為邊緣特徵但亮度實際上是恆定變化的部分。
一個最簡單且與方向無關的線性微分運算也就是「二次微分和」也稱為拉普拉斯運算。
計算二階微分特徵提取的方法稱為拉普拉斯濾波器(Laplacian filter)。座標 $(x, y)$ 的二階微分特徵量 $E_L(x, y)$ 如式 [1.4] 所示:
$$E_L(x, y) = \Delta I(x, y)$$
$$= \frac{\partial^2}{\partial x^2} I(x, y) + \frac{\partial^2}{\partial y^2} I(x, y)$$
$$\simeq \frac{\partial}{\partial x} \{ I(x+1, y) - I(x, y) \} + \frac{\partial}{\partial y} \{ I(x, y+1) - I(x, y) \}$$
$$\simeq \{ I(x+1, y) - I(x, y) \} - \{ I(x, y) - I(x-1, y) \} +$$
$$\{ I(x, y+1) - I(x, y) \} - \{ I(x, y) - I(x, y-1) \}$$
$$= I(x+1, y) + I(x-1, y) + I(x, y+1) + I(x, y-1) - 4I(x, y) \quad [1.4]$$
參考
Edge Detection
Differentiating an Image in X and Y
Edge Detection Using Gradients | Edge Detection
什麼是差分?數值分析的差分法基本概念
First-order Derivative kernels for Edge Detection
影像處理20141222 part 3
https://www.cse.sc.edu/~yiannisr/590/2018/Lectures/15-Edges.pdf
留言
張貼留言