在圖像中,邊緣是一條曲線,其走勢與圖像中強度快速變化的路徑一致。邊緣通常與場景中目標的邊界相關聯。邊緣檢測用于確定圖像中的邊緣。
要尋找邊緣,您可以使用 edge 函數。此函數使用以下兩個標準之一來尋找圖像中強度迅速變化的位置:
強度的一階導數的模大于某個閾值的位置
強度的二階導數有過零點的位置
edge 提供幾個導數估算器,其中每個都實現以下定義之一。
對于其中一些估算器,您可以指定運算是否應對水平邊緣、垂直邊緣敏感或對兩者都敏感。
edge 返回二值圖像,其中包含的 1 對應于找到邊的位置,0 對應于其他位置。
edge 提供的最強大的邊緣檢測方法是 Canny 方法。Canny 方法與其他邊緣檢測方法的不同之處在于,它使用兩種不同閾值(用于檢測強邊緣和弱邊緣),并且僅當弱邊緣連通到強邊緣時才在輸出中包括弱邊緣。
因此,這種方法不太可能受到噪聲的影響,更可能檢測到真正的弱邊緣。
檢測圖像中的邊緣
此示例說明如何同時使用 Canny 邊緣檢測器和 Sobel 邊緣檢測器來檢測圖像中的邊緣。
Matlab 代碼
I = imread('coins.png'); imshow(I); % 將 Sobel 和 Canny 邊緣檢測器同時應用于圖像,并顯示它們以進行比較。 BW1 = edge(I,'sobel'); BW2 = edge(I,'canny'); figure; imshowpair(BW1,BW2,'montage') title('Sobel Filter Canny Filter');
代碼效果如下:
邊緣算法:robert
邊緣定位精度較高,對于陡峭邊緣且噪聲低的圖像效果較好,但沒有進行平滑處理,沒有抑制噪聲的能力。
BW1=edge(Img,'Roberts',0.16);
邊緣算法:sobel prewitt
進行了平滑處理,對噪聲具有一定抑制能力,但容易出現多像素寬度。
BW2=edge(Img,'Sobel',0.16); BW3=edge(Img,'Prewitt',0.16);
邊緣算法:laplacian
對噪聲較為敏感,使噪聲能力成分得到加強,容易丟失部分邊緣方向信息,造成一些不連續的檢測邊緣,同時抗噪聲能力較差。
邊緣算法:log
抗噪聲能力較強,但會造成一些尖銳的邊緣無法檢測到。
BW5=edge
邊緣算法:canny
最優化思想的邊緣檢測算子,同時采用高斯函數對圖像進行平滑處理,但會造成將高頻邊緣平滑掉,造成邊緣丟失,采用雙閾值算法檢測和連接邊緣。
BW6=edge(Img,'Canny',0.16);
效果對比
審核編輯:郭婷
-
檢測器
+關注
關注
1文章
865瀏覽量
47713 -
噪聲
+關注
關注
13文章
1122瀏覽量
47437
原文標題:Matlab 圖像—邊緣檢測算法及效果演示
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論