邊緣檢測

邊緣檢測

邊緣檢測是圖像處理計算機視覺中的基本問題,邊緣檢測的目的是標識數字圖像中亮度變化明顯的點。圖像屬性中的顯著變化通常反映了屬性的重要事件和變化。 這些包括(i)深度上的不連續、(ii)表面方向不連續、(iii)物質屬性變化和(iv)場景照明變化。 邊緣檢測是圖像處理和計算機視覺中,尤其是特徵提取中的一個研究領域。

基本介紹

  • 中文名:邊緣檢測
  • 領域:圖像處理和計算機視覺
  • 目的:標識數字圖像中亮度變化明顯的點
  • 原因:深度上的不連續
  • 原因:表面方向不連續
  • 原因:物質屬性變化和
簡介,屬性,簡單模型,檢測邊緣,閾值確定,邊緣檢測運算元,Sobel邊緣檢測,邊緣檢測,

簡介

圖像邊緣檢測大幅度地減少了數據量,並且剔除了可以認為不相關的信息,保留了圖像重要的結構屬性。有許多方法用於邊緣檢測,它們的絕大部分可以劃分為兩類:基於查找一類和基於零穿越的一類。基於查找的方法通過尋找圖像一階導數中的最大和最小值來檢測邊界,通常是將邊界定位在梯度最大的方向。基於零穿越的方法通過尋找圖像二階導數零穿越來尋找邊界,通常是Laplacian過零點或者非線性差分表示的過零點。

屬性

邊緣可能與視角有關—— 也就是說邊緣可能隨著視角不同而變化,典型地反映在場景、物體的幾何形狀一個將另一個遮擋起來,也可能與視角無關——這通常反映被觀察物體的屬性如表面紋理和表面形狀。在二維乃至更高維空間中,需要考慮透視投影的影響。
一個典型的邊界可能是,例如一塊紅色和一塊黃色之間的邊界,與此相反的是邊線可能是在另外一種不變的背景上的少數不同顏色的點。在邊線的每一邊都有一個邊緣。在許多圖像處理的套用中邊緣都起著非常重要的作用。然而,在最近幾年,不明顯依賴於邊緣檢測作為預處理的計算機視覺處理方法研究取得了一些實質性的研究成果。

簡單模型

自然界圖像的邊緣並不總是理想的階梯邊緣。相反,它們通常受到一個或多個下面所列因素的影響:
1)有限場景深度帶來的聚焦模糊。
2)非零半徑光源產生的陰影帶來的半影模糊。
3)光滑物體邊緣的陰影。
4)物體邊緣附近的局部鏡面反射或者漫反射
儘管下面的模型不很完美,但是誤差函式erf 是常被用於實際套用中邊緣模糊效果的建模。
這樣,一個在位置 0 有一個邊界的一維圖像 f 可以用下面的模型來表示,其中σ 被稱為邊緣模糊度:
邊緣檢測
這樣,在邊界的左側亮度是:
邊緣檢測
右側亮度是:
邊緣檢測
注意 f 可以寫為卷積
邊緣檢測
其中 gσ 是標準偏差σ 的高斯核,u 是下面定義的一個階躍函式
邊緣檢測

檢測邊緣

如果將邊緣認為是一定數量點亮度發生變化的地方,那么邊緣檢測大體上就是計算這個亮度變化的導數。為簡化起見,我們可以先在一維空間分析邊緣檢測。在這個例子中,我們的數據是一行不同點亮度的數據。例如,在下面的1維數據中我們可以直觀地說在第4與第5個點之間有一個邊界:
除非場景中的物體非常簡單並且照明條件得到了很好的控制,否則確定一個用來判斷兩個相鄰點之間有多大的亮度變化才算是有邊界的閾值,並不是一件容易的事。實際上,這也是為什麼邊緣檢測不是一個微不足道問題的原因之一。
邊緣檢測
檢測方法
有許多用於邊緣檢測的方法, 他們大致可分為兩類:基於搜尋和基於零交叉。
基於搜尋的邊緣檢測方法首先計算邊緣強度, 通常用一階導數表示, 例如梯度模,然後,用計算估計邊緣的局部方向, 通常採用梯度的方向,並利用此方向找到局部梯度模的最大值。
基於零交叉的方法找到由圖像得到的二階導數的零交叉點來定位邊緣。 通常用拉普拉斯運算元或非線性微分方程的零交叉點。
濾波做為邊緣檢測的預處理通常是必要的,通常採用高斯濾波
已發表的邊緣檢測方法套用計算邊界強度的度量,這與平滑濾波有本質的不同。 正如許多邊緣檢測方法依賴於圖像梯度的計算,他們用不同種類的濾波器來估計x-方向和y-方向的梯度。
計算一階導數
許多邊緣檢測操作都是基於亮度的一階導數——這樣就得到了原始數據亮度的梯度。使用這個信息我們能夠在圖像的亮度梯度中搜尋峰值。如果 I(x) 表示點 x 的亮度,I′(x) 表示點 x 的一階導數(亮度梯度),這樣我們就會發現:
對於更高性能的圖像處理來說,一階導數能夠通過帶有掩碼的原始數據(1維)卷積計算得到。
邊緣檢測
邊緣檢測
計算二階導數
其它一些邊緣檢測操作是基於亮度的二階導數。這實質上是亮度梯度的變化率。在理想的連續變化情況下,在二階導數中檢測過零點將得到梯度中的局部最大值。另一方面,二階導數中的峰值檢測是邊線檢測,只要圖像操作使用一個合適的尺度表示。如上所述,邊線是雙重邊緣,這樣我們就可以在邊線的一邊看到一個亮度梯度,而在另一邊看到相反的梯度。這樣如果圖像中有邊線出現的話我們就能在亮度梯度上看到非常大的變化。為了找到這些邊線,我們可以在圖像亮度的二階導數中尋找過零點。如果 I(x) 表示點 x 的亮度,I′′(x) 表示點 x 亮度的二階導數,那么:
同樣許多算法也使用卷積掩碼快速處理圖像數據:
邊緣檢測
邊緣檢測
步驟:
①濾波:邊緣檢測算法主要是基於圖像強度的一階和二階導數,但導數的計算對噪聲很敏感,因此必須使用濾波器來改善與噪聲有關的邊緣檢測器的性能。需要指出,大多數濾波器在降低噪聲的同時也導致了邊緣強度的損失,因此,增強邊緣和降低噪聲之間需要折中。
②增強:增強邊緣的基礎是確定圖像各點鄰域強度的變化值。增強算法可以將鄰域(或局部)強度值有顯著變化的點突顯出來。邊緣增強一般是通過計算梯度幅值來完成的。
③檢測:在圖像中有許多點的梯度幅值比較大,而這些點在特定的套用領域中並不都是邊緣,所以應該用某種方法來確定哪些點是邊緣點。最簡單的邊緣檢測判據是梯度幅值閾值判據。
④定位:如果某一套用場合要求確定邊緣位置,則邊緣的位置可在子像素解析度上來估計,邊緣的方位也可以被估計出來。在邊緣檢測算法中,前三個步驟用得十分普遍。這是因為大多數場合下,僅僅需要邊緣檢測器指出邊緣出現在圖像某一像素點的附近,而沒有必要指出邊緣的精確位置或方向。
邊緣檢測的實質是採用某種算法來提取出圖像中對象與背景間的交界線。我們將邊緣定義為圖像中灰度發生急劇變化的區域邊界。圖像灰度的變化情況可以用圖像灰度分布的梯度來反映,因此我們可以用局部圖像微分技術來獲得邊緣檢測運算元。經典的邊緣檢測方法,是通過對原始圖像中像素的某小鄰域構造邊緣檢測運算元來達到檢測邊緣這一目的的。

閾值確定

一旦我們計算出導數之後,下一步要做的就是給出一個閾值來確定哪裡是邊緣位置。閾值越低,能夠檢測出的邊線越多,結果也就越容易受到圖片噪聲的影響,並且越容易從圖像中挑出不相關的特性。與此相反,一個高的閾值將會遺失細的或者短的線段。一個常用的這種方法是帶有滯後作用的閾值選擇。這個方法使用不同的閾值去尋找邊緣。首先使用一個閾值上限去尋找邊線開始的地方。一旦找到了一個開始點,我們在圖像上逐點跟蹤邊緣路徑,當大於門檻下限時一直紀錄邊緣位置,直到數值小於下限之後才停止紀錄。這種方法假設邊緣是連續的界線,並且我們能夠跟蹤前面所看到的邊緣的模糊部分,而不會將圖像中的噪聲點標記為邊緣。

邊緣檢測運算元

一階::Roberts Cross運算元,Prewitt運算元,Sobel運算元, Kirsch運算元,羅盤運算元;
二階: Marr-Hildreth,在梯度方向的二階導數過零點,Canny運算元,Laplacian運算元。
Canny運算元(或者這個運算元的變體)是最常用的邊緣檢測方法。 在 Canny 創造性的工作中,他研究了設計一個用於邊緣檢測最優預平滑濾波器中的問題,後來他說明這個濾波器能夠很好地被一階高斯導數核最佳化。另外 Canny 引入了非最大抑制概念,它是說邊緣定義為在梯度方向具有最大梯度值的點。
在一個離散矩陣中,非最大抑制階梯能夠通過一種方法來實現,首先預測一階導數方向、然後把它近似到45度的倍數、最後在預測的梯度方向比較梯度幅度。
一個獲得亞點精度邊緣的改進實現是通過檢測梯度方向上二階方向梯度的過零點來實現的:
它在梯度方向的三階方向梯度滿足符號條件
邊緣檢測
其中 Lx, Ly ... Lyyy 表示從使用高斯核平滑原始圖像得到的尺度空間表示 L 計算出的偏微分。
邊緣檢測
按照這種方法,能夠自動得到亞點精度的連續曲線邊緣。滯後門檻也可以用在這些差分邊緣片斷。
羅盤運算元是史丹福大學的Ruzon在1999年提出的一個新的運算元,據實驗以及報導,性能超過Canny運算元。

Sobel邊緣檢測

Soble邊緣檢測算法比較簡,實際套用中效率比canny邊緣檢測效率要高,但是邊緣不如Canny檢測的準確,但是很多實際套用的場合,sobel邊緣卻是首選,尤其是對效率要求較高,而對細紋理不太關心的時候。
Soble邊緣檢測通常帶有方向性,可以只檢測豎直邊緣或垂直邊緣或都檢測。
所以我們先定義兩個梯度方向的係數:
kx=0;ky=1;% horizontal
kx=1;ky=0;% vertical
kx=1;ky=1;% both
然後我們來計算梯度圖像,我們知道邊緣點其實就是圖像中灰度跳變劇烈的點,所以先計算梯度圖像,然後將梯度圖像中較亮的那一部分提取出來就是簡單的邊緣部分。
Sobel運算元用了一個3*3的濾波器來對圖像進行濾波從而得到梯度圖像,這裡面不再詳細描述怎樣進行濾波及它們的意義等。
豎起方向的濾波器:y_mask=op = [-1 -2 -1;0 0 0;1 2 1]/8;
水平方向的濾波器:op的轉置:x_mask=op’;
定義好濾波器後,我們就開始分別求垂直和豎起方向上的梯度圖像。用濾波器與圖像進行卷積即可:
bx = abs(filter2(x_mask,a));
by = abs(filter2(y_mask,a));
上面bx為水平方向上的梯度圖像,by為垂直方向上的梯度圖像。為了更清楚的說明算法過程,下面給出一張示例圖像的梯度圖像。

邊緣檢測

所謂邊緣是指其周圍像素灰度急劇變化的那些象素的集合,它是圖像最基本的特徵。邊緣存在於目標、背景和區域之間,所以,它是圖像分割所依賴的最重要的依據。由於邊緣是位置的標誌,對灰度的變化不敏感,,因此,邊緣也是圖像匹配的重要的特徵。
邊緣檢測和區域劃分是圖像分割的兩種不同的方法,二者具有相互補充的特點。在邊緣檢測中,是提取圖像中不連續部分的特徵,根據閉合的邊緣確定區域。而在區域劃分中,是把圖像分割成特徵相同的區域,區域之間的邊界就是邊緣。由於邊緣檢測方法不需要將圖像逐個像素地分割,因此更適合大圖像的分割。
邊緣大致可以分為兩種,一種是階躍狀邊緣,邊緣兩邊像素的灰度值明顯不同;另一種為屋頂狀邊緣,邊緣處於灰度值由小到大再到小的變化轉折點處。 邊緣檢測的主要工具是邊緣檢測模板。我們以一個一維模板為例來考察邊緣檢測模板是如何作用的。
模板的作用是將右鄰點的灰度值減去左鄰點的灰度值作為該點的灰度值。在灰度相近的區域內,這么做的結果使得該點的灰度值接近於0;而在邊緣附近,灰度值有明顯的跳變,這么做的結果使得該點的灰度值很大,這樣就出現了上面的結果。這種模板就是一種邊緣檢測器,它在數學上的涵義是一種基於梯度的濾波器,習慣上又稱邊緣運算元。我們知道,梯度是有方向的,和邊緣的方向總是垂直的。模板是水平方向的,而上面那幅圖象的邊緣恰好是垂直方向的,使用模板 就可以將它檢測出來。如果圖象的邊緣是水平方向的,我們可以用梯度是垂直
方向的模板 檢測它的邊緣。如果圖象的邊緣是45。方向的,我們可以用模板檢測它的邊緣。
常用的邊緣檢測模板有Laplacian運算元、Roberts運算元、Sobel運算元、log(Laplacian-Gauss)運算元、Kirsch運算元和Prewitt運算元等。

相關詞條

熱門詞條

聯絡我們