2010-12-19 211 views
10

有誰知道Prewitt,Sobel和Laplacian算子在邊緣檢測算法中有什麼區別嗎?邊緣檢測技術

比其他人好些嗎?

在不同情況下使用不同的操作符?

回答

16

拉普拉斯算子是二階導數算子,另外兩個是一階導數算子,所以它們用於不同的情況。 Sobel/Prewitt測量斜率,而拉普拉斯算子測量斜率的變化。

實例:

如果你有恆定斜率的信號(梯度):

Gradient signal: 1 2 3 4 5 6 7 8 9 

一個第一導數濾波器(索貝爾/ Prewitt算子)將測量的斜率,所以濾波器響應是

Sobel result:  2 2 2 2 2 2 2 

對於該信號,lapace濾波器的結果爲0,因爲斜率是恆定的。

實施例2:如果你有一個邊緣信號:

Edge:   0 0 0 0 1 1 1 1 

Sobel濾波器結果具有一個峯;峯的符號取決於邊的方向:

Sobel result: 0 0 0 1 1 0 0 0 

拉普拉斯濾波器產生兩個峯值;邊緣的位置與零交叉拉普拉斯過濾結果的對應:

Laplace result: 0 0 0 1 -1 0 0 0 

所以,如果你想知道的方向和邊緣,你會使用一階導數濾波器。而且,拉普拉斯濾波器比Sobel或Prewitt對噪聲更敏感。

另一方面,Sobel和Prewitt過濾器非常相似,用於相同的目的。第一階導數濾波器之間的重要區別是

  • 對噪聲的靈敏度
  • 各向異性:理想的是,過濾器的結果爲X/Y應該正比於罪α餘弦α,其中α是角度的梯度,並且兩個方格的總和應該對於每個角度都是相同的。
  • 行爲在角部

這些性質可與人工測試圖像(如著名的Jähne test patterns,在"Image Processing" by Bern Jähne實測值)進行測定。不幸的是,我沒有在該書中找到關於Prewitt操作員的任何信息,所以你必須做自己的實驗。

最後,這些屬性之間總是有一個折衷,它們中哪一個更重要取決於應用程序。

+0

謝謝Nikie,這是一個很好的迴應,正是我所期待的。接受的答案:)。 – ale 2010-12-19 22:27:52

+0

英特爾的Jähne測試模式顯然已經改變了位置(在上面的答案中是死鏈接),我在這裏找到它們:https://software.intel.com/zh-cn/node/503777 – winne2 2015-11-03 15:06:46

+1

@ winne2:謝謝,我已經更新了鏈接 – Niki 2015-11-03 16:15:20