Sobel運算元



Sobel運算元與Prewitt運算元非常相似。它也是一個導數模板,用於邊緣檢測。與Prewitt運算元一樣,Sobel運算元也用於檢測影像中的兩種邊緣。

  • 垂直方向
  • 水平方向

與Prewitt運算元的區別

主要區別在於,在Sobel運算元中,模板的係數不是固定的,可以根據需要調整,除非它們違反了導數模板的任何屬性。

Sobel運算元的垂直模板

以下是Sobel運算元的垂直模板:

-1 0 1
-2 0 2
-1 0 1

此模板的工作原理與Prewitt運算元的垂直模板完全相同。只有一個區別,即它在第一列和第三列的中心具有“2”和“-2”的值。應用於影像時,此模板將突出顯示垂直邊緣。

工作原理

當我們將此模板應用於影像時,它會突出顯示垂直邊緣。它就像一階導數一樣,計算邊緣區域中畫素強度的差異。

由於中心列為零,因此它不包含影像的原始值,而是計算該邊緣周圍左右畫素值的差值。此外,第一列和第三列的中心值分別為2和-2。

這為邊緣區域周圍的畫素值賦予了更大的權重。這增加了邊緣強度,使其與原始影像相比得到增強。

Sobel運算元的水平模板

以下是Sobel運算元的水平模板:

-1 -2 -1
0 0 0
1 2 1

上述模板將查詢水平方向的邊緣,這是因為零列位於水平方向。當您將此模板與影像進行卷積時,它會在影像中突出顯示水平邊緣。唯一的區別是它在第一行和第三行的中心元素為2和-2。

工作原理?

此模板將突出顯示影像中的水平邊緣。它也基於上述模板的原理,計算特定邊緣的畫素強度差異。由於模板的中心行由零組成,因此它不包含影像中邊緣的原始值,而是計算特定邊緣的上下畫素強度差異。從而增加了強度的突然變化,使邊緣更清晰可見。

現在是時候看看這些模板的實際效果了

示例影像

以下是我們將一次應用上述兩個模板的示例圖片。

Sobel Operator

應用垂直模板後

將垂直模板應用於上述示例影像後,將獲得以下影像。

Sobel Operator

應用水平模板後

將水平模板應用於上述示例影像後,將獲得以下影像。

Sobel Operator

比較

您可以看到,在我們應用垂直模板的第一張圖片中,所有垂直邊緣都比原始影像更清晰。同樣,在第二張圖片中,我們應用了水平模板,結果所有水平邊緣都清晰可見。

因此,您可以看到我們可以檢測影像中的水平和垂直邊緣。此外,如果您將Sobel運算元的結果與Prewitt運算元的結果進行比較,您會發現Sobel運算元找到的邊緣更多,或者使邊緣比Prewitt運算元更清晰可見。

這是因為在Sobel運算元中,我們為邊緣周圍的畫素強度分配了更大的權重。

對模板應用更大的權重

現在我們還可以看到,如果我們對模板應用更大的權重,它將為我們獲得更多的邊緣。如教程開頭所述,Sobel運算元沒有固定的係數,因此這裡還有另一個加權運算元:

-1 0 1
-5 0 5
-1 0 1

如果您將此模板的結果與Prewitt垂直模板的結果進行比較,很明顯,此模板將比Prewitt模板產生更多的邊緣,這僅僅是因為我們在模板中分配了更大的權重。

廣告
© . All rights reserved.