索貝爾算子

维基百科,自由的百科全书
跳转至: 导航搜索

索貝爾算子(Sobel operator)是圖像處理中的算子之一,主要用作邊緣檢測。在技術上,它是一離散性差分算子,用來運算圖像亮度函數的梯度之近似值。在圖像的任何一點使用此算子,將會產生對應的梯度矢量或是其法矢量。

公式[编辑]

該算子包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。如果以\mathbf{A}代表原始圖像,\mathbf{G_x}\mathbf{G_y}分別代表經橫向及縱向邊緣檢測的圖像,其公式如下:


\mathbf{G_x} = \begin{bmatrix} 
-1 & 0 & +1 \\
-2 & 0 & +2 \\
-1 & 0 & +1 
\end{bmatrix} * \mathbf{A}
\quad \mbox{and} \quad 
\mathbf{G_y} = \begin{bmatrix} 
-1 & -2 & -1 \\
0 & 0 & 0 \\
+1 & +2 & +1 
\end{bmatrix} * \mathbf{A}

圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小。

\mathbf{G} = \sqrt{ \mathbf{G_x}^2 + \mathbf{G_y}^2 }

然後可用以下公式計算梯度方向。

\mathbf{\Theta} = \operatorname{arctan}\left({ \mathbf{G_y} \over \mathbf{G_x} }\right)

在以上例子中,如果以上的角度\Theta等於零,即代表圖像該處擁有縱向邊緣,右方较亮,若为PI,则左方较亮。

請參閱[编辑]