幾種邊緣檢測算子的比較Roberts,Sobel,Prewitt,LOG,Canny

from:https://blog.csdn.net/gdut2015go/article/details/46779251

邊緣檢測是圖像處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字圖像中亮度變化明顯的點。圖像屬性中的顯著變化通常反映了屬性的重要事件和變化。這些包括:深度上的不連續表面方向不連續物質屬性變化場景照明變化。 邊緣檢測是圖像處理和計算機視覺中,尤其是特征提取中的一個研究領域。圖像邊緣檢測大幅度地減少了數據量,并且剔除了可以認為不相關的信息,保留了圖像重要的結構屬性。有許多方法用于邊緣檢測,它們的絕大部分可以劃分為兩類:基于查找一類和基于零穿越的一類。基于查找的方法通過尋找圖像一階導數中的最大和最小值來檢測邊界,通常是將邊界定位在梯度最大的方向。基于零穿越的方法通過尋找圖像二階導數零穿越來尋找邊界,通常是Laplacian過零點或者非線性差分表示的過零點。

人類視覺系統認識目標的過程分為兩步:首先,把圖像邊緣與背景分離出來;然后,才能知覺到圖像的細節,辨認出圖像的輪廓。計算機視覺正是模仿人類視覺的這個過程。因此在檢測物體邊緣時,先對其輪廓點進行粗略檢測,然后通過鏈接規則把原來檢測到的輪廓點連接起來,同時也檢測和連接遺漏的邊界點及去除虛假的邊界點。圖像的邊緣是圖像的重要特征,是計算機視覺、模式識別等的基礎,因此邊緣檢測是圖象處理中一個重要的環節。然而,邊緣檢測又是圖象處理中的一個難題,由于實際景物圖像的邊緣往往是各種類型的邊緣及它們模糊化后結果的組合,且實際圖像信號存在著噪聲。噪聲和邊緣都屬于高頻信號,很難用頻帶做取舍。

這就需要邊緣檢測來進行解決的問題了。邊緣檢測的基本方法有很多:

一階的有Roberts Cross算子,Prewitt算子,Sobel算子,Canny算子,Krisch算子,羅盤算子;

二階的還有Marr-Hildreth,在梯度方向的二階導數過零點。現在就來簡單介紹一下各種算子的算法

Roberts算子

Roberts算子是一種利用局部差分算子尋找邊緣的算子,它有下式給出:

?

其中?分別為4領域的坐標,且是具有整數像素坐標的輸人圖像;其中的平方根運算使得該處理類似于人類視覺系統中發生的過程。

Roberts算子是2X2算子模板。圖1所示的2個卷積核形成了Roberts算子。圖象中的每一個點都用這2個核做卷積。

Sobel算子

Sobel算子是一種一階微分算子,它利用像素鄰近區域的梯度值來計算1個像素的梯度,然后根據一定的絕對值來取舍。它由下式給出:

Sobel算子是3*3算子模板。圖2所示的2個卷積核dx 、 dy形成Sobel算子。一個核對通常的垂直邊緣響應最大,而另一個核對水平邊緣響應最大。2個卷積的最大值作為該點的輸出值。運算結果是一幅邊緣幅度圖像。

Prewitt算子

Prewitt算子由下式給出:

Prewitt算子是3*3算子模板。圖3所示的2個卷積核dx ,不要形成了Prewitt算子。與Sobel算子的方法一樣,圖像中的每個點都用這2個核進行卷積,取最大值作為輸出值。Prewitt算子也產生一幅邊緣幅度圖像。

LOG濾波器又稱Marr-Hildreth模板或算子

式中:G(x,y)是對圖像進行處理時選用的平滑函數(Gaussian函數);x,y為整數坐標; σ為高斯分布的均方差。對平滑后的圖像fs(fs=f(x,y)*G(x,y))做拉普拉斯變換,得:

即先對圖象平滑,后拉氏變換求二階微分,等效于把拉氏變化作用于平滑函數,得到1個兼有平滑和二階微分作用的模板,再與原來的圖像進行卷積。用Marr-Hildreth模板與圖像進行卷積的優點在于,模板可以預先算出,實際計算可以只進行卷積。

LOG濾波器有以下特點:

(1)通過圖象平滑,消除了一切尺度小于σ的圖像強度變化;

(2)若用其它微分法,需要計算不同方向的微分,而它無方向性,因此可以節省計算量;

(3)它定位精度高,邊緣連續性好,可以提取對比度較弱的邊緣點。

LOG濾波器也有它的缺點:當邊緣的寬度小于算子寬度時,由于過零點的斜坡融合將會丟失細節。

LOG濾波器有無限長的拖尾,若取得很大尺寸,將使得計算不堪重負。但隨著:的增加,LOG濾波器幅值迅速下降,當r大于一定程度時,可以忽略模板的作用,這就為節省計算量創造了條件。實際計算時,常常取n*n大小的LOG濾波器,近似n=3σ。另外,LOG濾波器可以近似為兩個指數函數之差,即DOG ( Difference Of twoGaussians functions):

當σ1/σ2=1.6時,DOG代替LOG減少了計算量。

Canny算子

Canny算子是是一階算子。其方法的實質是用1個準高斯函數作平滑運算fs=f(x,y)*G(x,y),然后以帶方向的一階微分算子定位導數最大值。

??? ?平滑后fs(x,y)的梯度可以使用2*2的一階有限差分近似式:

P[i,j]≈(fs[i,j+1]-fs[i,j]+fs[i+1,j+1]-fs[i+1,j])/2

Q[i,j]≈(fs[i,j]-fs[i+1,j]+fs[i,j+1]-fs[i+1,j+1])/2

在這個2x2正方形內求有限差分的均值,便于在圖像中的同一點計算二和y的偏導數梯度。幅值和方向角可用直角坐標到極坐標的坐標轉化來計算:

?

M[i,j]反映了圖象的邊緣強度;反映了邊緣的方向。使得M}i,j}取得局部最大值的方向角,就反映了邊緣的方向。

Canny算子也可用高斯函數的梯度來近似,在理論上很接近4個指數函數的線性組合形成的最佳邊緣算子。在實際工作應用中編程較為復雜且運算較慢。

幾種算子的比較

Robert算子定位比較精確,但由于不包括平滑,所以對于噪聲比較敏感;

Prewitt算子和Sobel算子都是一階的微分算子,而前者是平均濾波,后者是加權平均濾波且檢測的圖像邊緣可能大于2個像素。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果,但是對于混合多復雜噪聲的圖像,處理效果就不理想了。;

LOG濾波器方法通過檢測二階導數過零點來判斷邊緣點。LOG濾波器中的a正比于低通濾波器的寬度,a越大,平滑作用越顯著,去除噪聲越好,但圖像的細節也損失越大,邊緣精度也就越低。所以在邊緣定位精度和消除噪聲級間存在著矛盾,應該根據具體問題對噪聲水平和邊緣點定位精度要求適當選取。

討論和比較了幾種常用的邊緣檢測算子。梯度算子計算簡單,但精度不高,只能檢測出圖像大致的輪廓,而對于比較細的邊緣可能會忽略。Prewitt 和Sobel 算子比Roberts 效果要好一些。LOG 濾波器和Canny 算子的檢測效果優于梯度算子,能夠檢測出圖像較細的邊緣部分。不同的系統,針對不同的環境條件和要求,選擇合適的算子來對圖像進行邊緣檢測。

---------------------------------------------------------------------------------------------------------------------------------------------

from:https://blog.csdn.net/xiaojiegege123456/article/details/7714863

不同圖像灰度不同,邊界處一般會有明顯的邊緣,利用此特征可以分割圖像。需要說明的是:邊緣和物體間的邊界并不等同,邊緣指的是圖像中像素的值有突變的地方,而物體間的邊界指的是現實場景中的存在于物體之間的邊界。有可能有邊緣的地方并非邊界,也有可能邊界的地方并無邊緣,因為現實世界中的物體是三維的,而圖像只具有二維信息,從三維到二維的投影成像不可避免的會丟失一部分信息;另外,成像過程中的光照和噪聲也是不可避免的重要因素。正是因為這些原因,基于邊緣的圖像分割仍然是當前圖像研究中的世界級難題,目前研究者正在試圖在邊緣提取中加入高層的語義信息。

在實際的圖像分割中,往往只用到一階和二階導數,雖然,原理上,可以用更高階的導數,但是,因為噪聲的影響,在純粹二階的導數操作中就會出現對噪聲的敏感現象,三階以上的導數信息往往失去了應用價值。二階導數還可以說明灰度突變的類型。在有些情況下,如灰度變化均勻的圖像,只利用一階導數可能找不到邊界,此時二階導數就能提供很有用的信息。二階導數對噪聲也比較敏感,解決的方法是先對圖像進行平滑濾波,消除部分噪聲,再進行邊緣檢測。不過,利用二階導數信息的算法是基于過零檢測的,因此得到的邊緣點數比較少,有利于后繼的處理和識別工作。

各種算子的存在就是對這種導數分割原理進行的實例化計算,是為了在計算過程中直接使用的一種計算單位

Roberts算子:邊緣定位準,但是對噪聲敏感。適用于邊緣明顯且噪聲較少的圖像分割。Roberts邊緣檢測算子是一種利用局部差分算子尋找邊緣的算子,Robert算子圖像處理后結果邊緣不是很平滑。經分析,由于Robert算子通常會在圖像邊緣附近的區域內產生較寬的響應,故采用上述算子檢測的邊緣圖像常需做細化處理,邊緣定位的精度不是很高。

Prewitt算子:對噪聲有抑制作用,抑制噪聲的原理是通過像素平均,但是像素平均相當于對圖像的低通濾波,所以Prewitt算子對邊緣的定位不如Roberts算子。

Sobel算子:Sobel算子和Prewitt算子都是加權平均,但是Sobel算子認為,鄰域的像素對當前像素產生的影響不是等價的,所以距離不同的像素具有不同的權值,對算子結果產生的影響也不同。一般來說,距離越遠,產生的影響越小。

Isotropic Sobel算子:加權平均算子,權值反比于鄰點與中心點的距離,當沿不同方向檢測邊緣時梯度幅度一致,就是通常所說的各向同性。

在邊沿檢測中,常用的一種模板是Sobel?算子。Sobel 算子有兩個,一個是檢測水平邊沿的;另一個是檢測垂直平邊沿的 。Sobel算子另一種形式是各向同性Sobel(Isotropic Sobel)算子,也有兩個,一個是檢測水平邊沿的,另一個是檢測垂直平邊沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加權系數更為準確,在檢測不同方向的邊沿時梯度的幅度一致。由于建筑物圖像的特殊性,我們可以發現,處理該類型圖像輪廓時,并不需要對梯度方向進行運算,所以程序并沒有給出各向同性Sobel算子的處理方法。
? ??由于Sobel算子是濾波算子的形式,用于提取邊緣,可以利用快速卷積函數,簡單有效,因此應用廣泛。美中不足的是,Sobel算子并沒有將圖像的主體與背景嚴格地區分開來,換言之就是Sobel算子沒有基于圖像灰度進行處理,由于Sobel算子沒有嚴格地模擬人的視覺生理特征,所以提取的圖像輪廓有時并不能令人滿意。??在觀測一幅圖像的時候,我們往往首先注意的是圖像與背景不同的部分,正是這個部分將主體突出顯示,基于該理論,我們可以給出閾值化輪廓提取算法,該算法已在數學上證明當像素點滿足正態分布時所求解是最優的。

上面的算子是利用一階導數的信息,屬于梯度算子范疇。

Laplacian算子:這是二階微分算子。其具有各向同性,即與坐標軸方向無關,坐標軸旋轉后梯度結果不變。但是,其對噪聲比較敏感,所以,圖像一般先經過平滑處理,因為平滑處理也是用模板進行的,所以,通常的分割算法都是把Laplacian算子和平滑算子結合起來生成一個新的模板。

Laplacian算子一般不以其原始形式用于邊緣檢測,因為其作為一個二階導數,Laplacian算子對噪聲具有無法接受的敏感性;同時其幅值產生算邊緣,這是復雜的分割不希望有的結果;最后Laplacian算子不能檢測邊緣的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性質進行邊緣定位;(2)確定一個像素是在一條邊緣暗的一面還是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二階導數是線性運算,利用LoG卷積一幅圖像與首先使用高斯型平滑函數卷積改圖像,然后計算所得結果的拉普拉斯是一樣的。所以在LoG公式中使用高斯函數的目的就是對圖像進行平滑處理,使用Laplacian算子的目的是提供一幅用零交叉確定邊緣位置的圖像;圖像的平滑處理減少了噪聲的影響并且它的主要作用還是抵消由Laplacian算子的二階導數引起的逐漸增加的噪聲影響。

?

幾種常用的邊緣檢測算子主要有Roberts邊緣檢測算子,Sobel算子、Prewitt算子、Krisch邊緣算子,高斯-拉普拉斯算子。

邊緣大致可以分為兩種,一種是階躍狀邊緣,邊緣兩邊像素的灰度值明顯不同;另一種為屋頂狀邊緣,邊緣處于灰度值由小到大再到小的變化轉折點處。
邊緣檢測的主要工具是邊緣檢測模板。我們以一個一維模板為例來考察邊緣檢測模板是如何作用的。假設有一個模板基于Roberts算子的邊緣檢測?和一幅圖象基于Roberts算子的邊緣檢測

可以看出,圖象中左邊暗,右邊亮,中間存在著一條明顯的邊緣,是一個典型階躍狀邊緣。使用模板基于Roberts算子的邊緣檢測?進行模板操作后,結果如下

基于Roberts算子的邊緣檢測

可以看出,邊緣檢測后的圖象在原圖象暗亮邊緣處的灰度值高很多。觀察時,就能發現一條很明顯的亮邊,其他區域都很暗,這樣就起到了邊緣檢測的作用。
模板的作用是將右鄰點的灰度值減去左鄰點的灰度值作為該點的灰度值。在灰度相近的區域內,這么做的結果使得該點的灰度值接近于0;而在邊緣附近,灰度值有明顯的跳變,這么做的結果使得該點的灰度值很大,這樣就出現了上面的結果。這種模板就是一種邊緣檢測器,它在數學上的涵義是一種基于梯度的濾波器,習慣上又稱邊緣算子。我們知道,梯度是有方向的,和邊緣的方向總是垂直的。模板是水平方向的,而上面那幅圖象的邊緣恰好是垂直方向的,使用模板就可以將它檢測出來。如果圖象的邊緣是水平方向的,我們可以用梯度是垂直
方向的模板基于Roberts算子的邊緣檢測?檢測它的邊緣。如果圖象的邊緣是45。方向的,我們可以用模板基于Roberts算子的邊緣檢測?檢測它的邊緣。

常用的邊緣檢測模板有Laplacian算子、Roberts算子、Sobel算子、log(Laplacian-Gauss)算子、Kirsch算子和Prewitt算子等。

?

二.Roberts算子

?

如果我們沿如下圖方向角度求其交叉方向的偏導數,則得到Roberts于1963年提出的交叉算子邊緣檢測方法。該方法最大優點是計算量小,速度快。但該方法由于是采用偶數模板,如下圖所示,所求的(x,y)點處梯度幅度值,其實是圖中交叉點處的值,從而導致在圖像(x,y)點所求的梯度幅度值偏移了半個像素(見下圖)。

?邊緣檢測

邊緣檢測
?

Roberts算子的推導:

?

Sobel算子

?

Sobel算子也有兩個,一個是檢測水平邊緣的模板基于Sobel算子的邊緣檢測?,另一個是檢測水平邊緣的模板基于Sobel算子的邊緣檢測?。與Prewitt算子相比,Sobel算子對于象素位置的影響作了加權,因此效果更好。

sobel算子的另一種形式是各向同性Sobel算子,也有兩個模板組成,一個是檢測水平邊緣的基于Sobel算子的邊緣檢測?,另一個是檢測垂直邊緣的基于Sobel算子的邊緣檢測。各向同性Sobel算子和普通Sobel算子相比,位置加權系數更為準確,在檢測不同方向的邊緣時梯度的幅度一致。

Sobel算子的推導:

Prewitt算子

Prewitt算子由兩部分組成,檢測水平邊緣的模板

基于prewitt算子的邊緣檢測?和基于prewitt算子的邊緣檢測檢測垂直邊緣的模板

prewitt算子一個方向求微分,一個方向求平均,所以對噪聲相對不敏感。

?

laplacian算子

Laplacian算子定義為

基于Laplacian算子的邊緣檢測

它的差分形式為
基于Laplacian算子的邊緣檢測


表示成模板的形式就是?基于Laplacian算子的邊緣檢測。Laplacian算子另外一種形式是基于Laplacian算子的邊緣檢測,也經常使用。Laplace算子是一種各向同性算子,在只關心邊緣的位置而不考慮其周圍的象素灰度差值時比較合適。Laplace算子對孤立象素的響應要比對邊緣或線的響應要更強烈,因此只適用于無噪聲圖象。存在噪聲情況下,使用Laplacian算子檢測邊緣之前需要先進行低通濾波。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458175.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django 初試

/*************************************************************************************** django 初試* 說明:* 昨天打搭了dgango的服務器,今天學一下怎么來輸出一個hello world出來。* * …

淺析“高斯白噪聲”,“泊松噪聲”,“椒鹽噪聲”的區別

from:https://www.jianshu.com/p/67f909f3d0ce 在圖像處理的過程中,一般情況下都進行圖像增強,圖像增強主要包括“空域增強”和“頻域增強”, 空域增強包括平滑濾波和銳化濾波。 平滑濾波,就是將圖像模糊處理&#x…

HttpClient通過Post上傳文件(轉)

在之前一段的項目中,使用Java模仿Http Post方式發送參數以及文件,單純的傳遞參數或者文件可以使用URLConnection進行相應的處理。 但是項目中涉及到既要傳遞普通參數,也要傳遞多個文件(不是單純的傳遞XML文件)。在網上…

數字圖像處理:各種變換濾波和噪聲的類型和用途總結

摘自http://imgtec.eetrend.com/blog/4564 一、基本的灰度變換函數 1.1圖像反轉 適用場景:增強嵌入在一幅圖像的暗區域中的白色或灰色細節,特別是當黑色的面積在尺寸上占主導地位的時候。 1.2對數變換(反對數變換與其相反) …

Java 開發環境部署

1.下載Java開發環境工具包JDK,下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載后,雙擊jdk應用程序,根據提示完成安裝,安裝過程中可以自定義安裝目錄等信息,這里我選擇…

枚舉enum、NS_ENUM 、NS_OPTIONS

2019獨角獸企業重金招聘Python工程師標準>>> enum 了解位移枚舉之前&#xff0c;我們先回顧一下C語言位運算符。 1 << : 左移,比如1<<n,表示1往左移n位&#xff0c;即數值大小2的n次方; 例如 : 0b0001 << 1 變為了 0b0010 2 >> : 右…

mysql 關鍵詞相關度排序方法詳細示例分析

http://www.jb51.net/article/40480.htm轉載于:https://www.cnblogs.com/lixiuran/p/5299305.html

數字圖像處理-頻率域濾波原理

from&#xff1a;https://blog.csdn.net/forrest02/article/details/55510711?locationNum15&fps1 寫在前面的話 作者是一名在讀的碩士研究僧&#xff0c;方向是圖像處理。由于圖像處理是一門相對復雜的學科&#xff0c;作者在課堂上學到的東西只是非常淺顯的內容&#…

tomcat優化-有改protocol 和 緩存 集群方案

tomcat優化 在線上環境中我們是采用了tomcat作為Web服務器&#xff0c;它的處理性能直接關系到用戶體驗&#xff0c;在平時的工作和學習中&#xff0c;歸納出以下七種調優經驗。 1. 服務器資源 服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響。 (1) 對于高并發…

深入淺出的講解傅里葉變換(真正的通俗易懂)

原文出處&#xff1a; 韓昊 1 2 3 4 5 6 7 8 9 10 作 者&#xff1a;韓 昊 知 乎&#xff1a;Heinrich 微 博&#xff1a;花生油工人 知乎專欄&#xff1a;與時間無關的故事 謹以此文獻給大連海事大學的吳楠老師&#xff0c;柳曉鳴老師&#xff0c;王新年老師以及張晶泊老…

分布式鎖 基于Redis

分布式鎖的實現(基于Redis)參考:http://www.jb51.net/article/75439.htm http://www.linuxidc.com/Linux/2015-01/111827.htm http://www.tuicool.com/articles/6juqmm7 方式一: 基于第三方類庫 redssion 1.安裝redis安裝redssion的鎖服務隊redis的版本有要求&#xff0c;要求必…

學好Linux決心書

我叫李楊&#xff0c;經過在老男孩教育linux運維班5個月學習后&#xff0c;我一定要達到的的薪水目標是7k,為了達到此目標我將采取如下5大行動或方案&#xff1a;1.每天堅持學習7個小時2.堅持每天跑步1小時3.調整思路 嚴于利己4.讓自己生活更加充實&#xff0c;不在渾渾噩噩5.為…

如何通俗易懂地解釋歐拉公式(e^πi+1=0)?

from&#xff1a;https://www.zhihu.com/question/41134540 http://www.matongxue.com/madocs/8.html

IIS(1)

轉載&#xff1a;http://blog.csdn.net/ce123 IIS音頻總線學習&#xff08;一&#xff09;數字音頻技術 一、聲音的基本概念 聲音是通過一定介質傳播的連續的波。 圖1 聲波重要指標&#xff1a; 振幅&#xff1a;音量的大小周期&#xff1a;重復出現的時間間隔頻率&#xff1a;…

手機屏幕適配原理及實現

為什么80%的碼農都做不了架構師&#xff1f;>>> 手機屏幕是用戶與 App 最直接的交互點 不同的分辨率下用戶對我們的 App 具有明顯的感觀差異&#xff0c;主流分辨率的更新迭代卻又完全獨立于 App 進行。這讓我們想要使 App 在絕大多數主流手機上都保持感觀、體驗的…

【數字圖像處理】傅里葉變換在圖像處理中的應用

from&#xff1a;https://www.cnblogs.com/tenderwx/p/5245859.html 1.理解二維傅里葉變換的定義 1.1二維傅里葉變換 二維Fourier變換: 逆變換&#xff1a; 1.2二維離散傅里葉變換 一個圖像尺寸為MN的 函數的離散傅里葉變換由以下等式給出&#xff1a; 其中 和。其中變量u和…

最好的云備份選項

能夠實現數據備份的方式有很多。在虛擬化技術最為興盛的時期&#xff0c;首選方式是使用數據保護軟件&#xff0c;在hypervisor層進行備份或者復制整臺虛擬機&#xff0c;比如Veeam Backup以及Zerto提供的同步軟件。 對于使用VMware云的IT部門來說&#xff0c;這種方式現在仍然…

求二叉樹中兩個節點的最遠距離

問題定義如果我們把二叉樹看成一個圖&#xff0c;父子節點之間的連線看成是雙向的&#xff0c;我們姑且定義"距離"為兩節點之間邊的個數。寫一個程序求一棵二叉樹中相距最遠的兩個節點之間的距離。計算一個二叉樹的最大距離有兩個情況:情況A: 路徑經過左子樹的最深節…

halcon學習(算子匯總)

from:https://www.cnblogs.com/hanzhaoxin/archive/2013/01/09/2852213.html dev_clear_obj(Objects : : : ) 刪除一個iconic對象 dev_error_var( : : ErrorVar, Mode : ) 定義或取消定義一個錯誤變量 dev_get_exception_data( : : Exception, Name : Value) 獲取異常數據…

Bing Speech Recognition 標記

Bing Speech Services Bing Bing Speech Services provide speech capabilities for Windows and Windows Phone https://msdn.microsoft.com/en-us/library/dn303461.aspx 已失效。 轉載于:https://www.cnblogs.com/zangdalei/p/5312440.html