複製鏈接
請複製以下鏈接發送給好友

索貝爾算子

鎖定
索貝爾算子是計算機視覺領域的一種重要處理方法。主要用於獲得數字圖像的一階梯度,常見的應用和物理意義是邊緣檢測。索貝爾算子是把圖像中每個像素的上下左右四領域的灰度值加權差,在邊緣處達到極值從而檢測邊緣。 [1] 
索貝爾算子主要用作邊緣檢測。在技術上,它是一離散性差分算子,用來運算圖像亮度函數的梯度之近似值。在圖像的任何一點使用此算子,將會產生對應的梯度矢量或是其法矢量。
索貝爾算子不但產生較好的檢測效果,而且對噪聲具有平滑抑制作用,但是得到的邊緣較粗,且可能出現偽邊緣。 [2] 
中文名
索貝爾算子
外文名
Sobel operator
應    用
圖像處理

索貝爾算子算子描述

在邊緣檢測中,常用的一種模板是Sobel 算子。Sobel 算子有兩個,一個是檢測水平邊緣的 ;另一個是檢測垂直邊緣的 。與Prewitt算子相比,Sobel算子對於象素的位置的影響做了加權,可以降低邊緣模糊程度,因此效果更好。
Sobel算子另一種形式是各向同性Sobel(Isotropic Sobel)算子,也有兩個,一個是檢測水平邊緣的 ,另一個是檢測垂直邊緣的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加權係數更為準確,在檢測不同方向的邊沿時梯度的幅度一致。將Sobel算子矩陣中的所有2改為根號2,就能得到各向同性Sobel的矩陣。
由於Sobel算子是濾波算子的形式,用於提取邊緣,可以利用快速卷積函數, 簡單有效,因此應用廣泛。美中不足的是,Sobel算子並沒有將圖像的主體與背景嚴格地區分開來,換言之就是Sobel算子沒有基於圖像灰度進行處理,由於Sobel算子沒有嚴格地模擬人的視覺生理特徵,所以提取的圖像輪廓有時並不能令人滿意。 在觀測一幅圖像的時候,我們往往首先注意的是圖像與背景不同的部分,正是這個部分將主體突出顯示,基於該理論,我們給出了下面閾值化輪廓提取算法,該算法已在數學上證明當像素點滿足正態分佈時所求解是最優的。

索貝爾算子計算方法

索貝爾算子邊緣算子所採用的算法是先進行加權平均,然後進行微分運算,算子的計算方法如下:
圖10-12 圖10-12
Sobel算子垂直方向和水平方向的模板如圖10-12所示,前者可以檢測出圖像中的水平方向的邊緣,後者則可以檢測圖像中垂直方向的邊緣。實際應用中,每個像素點取兩個模板卷積的最大值作為該像素點的輸出值,運算結果是一副邊緣圖像。 [2] 

索貝爾算子核心公式

該算子包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。如果以A代表原始圖像,Gx及Gy分別代表經橫向及縱向邊緣檢測的圖像,其公式如下:
圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小。
然後可用以下公式計算梯度方向。
在以上例子中,如果以上的角度θ等於零,即代表圖像該處擁有縱向邊緣,左方較右方暗。

索貝爾算子細化邊緣

在對圖象的研究和應用中,人們往往僅對圖象中的某些部分感興趣,這些部分通常稱為目標或前景,其餘部分則稱為背景. 將圖象分為目標和背景的操作稱為圖象分割.圖象分割是由圖象處理進到圖象分析的關鍵步驟. 多年來,圖象分割一直得到人們的高度重視,至今已提出了上千種分割算法. 它們大致可分為閾值法、邊緣檢測法和區域生長法等幾大類 .在這些方法中,人們對閾值法較為重視,還不時有新的方法提出來.而對於後兩種方法則注意較少,已有的方法基本上還是60~ 70年代提出的. 究其原因,是由於閾值法方法比較簡單, 且計算量也較少些.但其缺點是,除了自適應閾值法外,其閾值的選取主要是根據灰度分佈的直方圖,而很少考慮象素的空間關係.當圖象比較複雜時,目標與背景就不能簡單地用一個閾值來分離. 這時就只有求助於邊緣檢測法或區域生長法. 而邊緣檢測法中最為常用的是Sobel算子. [3] 
Sobel算子的優點是方法簡單、處理速度快,並且所得的邊緣光滑、連續.其缺點是邊緣較粗,由於處理時需作兩值化處理,故得到的邊緣與閾值的選取也有很大的關係.本文提出的邊緣細化方法是通過引入衰減因子而得到不失真的灰階邊緣圖,再用Sobel算子進行細化,對於邊緣較陡的部分可以得到光滑、連續,且接近單點寬的邊緣;而對於邊緣模糊的部分,這種過程可以重複多次,也可得到較細的邊緣(但不一定連續) .同時,這種方法還可保留低幅值的邊緣.這樣,既可提高定位精度,又可得到用其它方法難以得到的模糊邊緣和微弱邊緣. 而且對用其它邊緣檢測方法得到的邊緣進行處理,此方法也有效. [3] 
邊緣細化的應用大致可有以下幾種情況:
圖8 圖8
( 1) 重疊對象的分離,如圖8中的(a)兩值圖象上的3個細胞無法分割,而從細化的邊緣圖(圖8中的(b) )中可得到分割所需的邊緣信息.
( 2) 缺損對象的補齊,如圖8中的(c)兩值圖象上的血管管壁,其內側有缺損,而從細化的邊緣圖中(圖8中的(d) )可得到補齊的所需邊緣信息.
( 3) 可補上閾值選取不當而遺漏的對象,如圖8細胞和血管壁的邊緣圖上都多出了一個小顆粒.
( 4) 由於邊緣以灰度差為分離參數,且邊緣線較細,故定位較準確,檢測效果比閾值法要好,這有利於測量精度的提高. [3] 
本方法的缺點是處理效果與邊緣本身的質量有關,若邊緣質量好,且分界線較陡,則效果較好,反之則較差,而且還不適用於理想階躍輸入. 這些可從圖中看出. 另外,細化邊緣圖可能“信息過量” ,從中直接提取邊緣也很困難,最好能與其它特徵,如原灰階圖、閾值圖等一起考慮,可作為它們的補充. 如用閾值方法尋找對象,再用此方法精確定位. [3] 

索貝爾算子應用實例

使用MATLAB進行Sobel算子的可視化邊緣檢測,程序如圖1所示:
圖1 圖1
其顯示結果如圖17-6所示。
圖17-6 圖17-6
採用Sobel對腳印圖像的邊緣檢測可知,採用Sobel算子對圖像進行邊緣檢測,紋理檢測效果一般,邊緣檢測斷斷續續,不具後續處理。Sobel算子是一階離散性差分算子, 用來運算圖像亮度函數的梯度之近似值。Sobel算子並沒有將圖像的主體與背景嚴格地區 分開來.即Sobel算子沒有基於圖像灰度進行處理,由於Sobel算子沒有嚴格地模擬人的 視覺生理特徵,所以提取的圖像輪廓有時並不能令人滿意。 [1] 
參考資料
  • 1.    餘勝威編著 .《MATLAB優化算法案例分析與應用 進階篇》.北京:清華大學出版社 ,2015
  • 2.    陳天華編著 .《數字圖像處理 第2版》 .北京:清華大學出版社 ,2014
  • 3.    陸宗騏,梁誠,用Sobel算子細化邊緣,《中國圖象圖形學報》, 2000, 5(6):516-520