1. 程式人生 > >Canny運算元邊緣檢測

Canny運算元邊緣檢測

1.Canny邊緣檢測基本原理
(1)圖象邊緣檢測必須滿足兩個條件:一能有效地抑制噪聲;二必須儘量精確確定邊緣的位置。
(2)根據對信噪比與定位乘積進行測度,得到最優化逼近運算元。這就是Canny邊緣檢測運算元。
(3)類似與Marr(LoG)邊緣檢測方法,也屬於先平滑後求導數的方法。
2.Canny邊緣檢測演算法:
step1:用高斯濾波器平滑圖象;
step2:用一階偏導的有限差分來計算梯度的幅值和方向;
step3:對梯度幅值進行非極大值抑制;
step4:用雙閾值演算法檢測和連線邊緣。
step1:高斯平滑函式
以一維訊號為例加以討論.一維高斯濾波函式G(x)定義為

 (轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格


(轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格
step3:非極大值抑制
僅僅得到全域性的梯度並不足以確定邊緣,因此為確定邊緣,必須保留區域性梯度最大的點,而抑制非極大值。(non-maxima suppression,NMS)

解決方法:利用梯度的方向。
(轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格
圖2非極大值抑制
四個扇區的標號為0到3,對應3*3鄰域的四種可能組合。
在每一點上,鄰域的中心象素M與沿著梯度線的兩個象素相比。如果M的梯度值不比沿梯度線的兩個相鄰象素梯度值大,則令M=0。
即: (轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格
step4:閾值化
減少假邊緣段數量的典型方法是對N[i,j]使用一個閾值。將低於閾值的所有值賦零值。但問題是如何選取閾值?
解決方法:雙閾值演算法。雙閾值演算法對非極大值抑制圖象作用兩個閾值τ1和τ2,且2τ1≈τ2從而可以得到兩個閾值邊緣圖象N1[i,j]和N2[i, j]。由於N2[i,j]使用高閾值得到,因而含有很少的假邊緣,但有間斷(不閉合)。雙閾值法要在N2[i,j]中把邊緣連線成輪廓,當到達輪廓的端點時,該演算法就在N1[i,j]的8鄰點位置尋找可以連線到輪廓上的邊緣,這樣,演算法不斷地在N1[i,j]中收集邊緣,直到將N2[i,j]連線起來為止。

4 邊緣運算元應滿足的準則
(轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格

(轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格
若滿足此準則,就能保證單邊緣只有一個響應。
對一個演算法的效能評價可分為兩個階段進行:計算假邊緣與丟失邊緣的數目;測量用於估計位置和方向的誤差(或誤差分佈)。邊緣檢測演算法的優劣也可用品質因數(Figure of Merit)來描述。Pratt品質因數是其中一種,它著重考慮了丟失了有效的邊緣、邊緣定位誤差和將噪聲判斷為邊緣等三種誤差。
(轉)canny運算元的理論分析 - zhaowei0425 - zhaowei0425的部落格
5 結束語
邊緣檢測在圖象分割、模式識別、機器視覺等中都有重要作用,人們已研究出很多種邊緣檢測演算法,而哈夫變換和canny邊緣運算元等是最經典的演算法,人們已在這些經典演算法基礎上提出一些新的改進演算法。

參考文獻
[1]賈雲德.機器視覺[M].北京:科學出版社,2000

[2]章毓晉.圖象處理和分析[M].北京:清華大學出版社,1999
[3]郎銳.數字圖象處理學.北京:希望電子出版社,2002
[4]王娜,李霞.一種新的改進Canny邊緣檢測演算法.深圳大學學報,2005,4(2),149-152
====================================================================================

邊緣提取以及邊緣增強是不少影象處理軟體都具有的基本功能,它的增強效果很明顯,在用於
識別的應用中,影象邊緣也是非常重要的特徵之一。影象邊緣保留了原始影象中相當重要的部分資訊,
而又使得總的資料量減小了很多,這正符合特徵提取的要求。在以後要談到的霍夫變換(檢測影象中的幾
何形狀)中,邊緣提取就是前提步驟。
這裡我們只考慮灰度影象,用於影象識別的邊緣提取比起僅僅用於視覺效果增強的邊緣提取要
複雜一些。要給影象的邊緣下一個定義還挺困難的,從人的直觀感受來說,邊緣對應於物體的邊界。圖
像上灰度變化劇烈的區域比較符合這個要求,我們一般會以這個特徵來提取影象的邊緣。但在遇到包含
紋理的影象上,這有點問題,比如說,影象中的人穿了黑白格子的衣服,我們往往不希望提取出來的邊
緣包括衣服上的方格。但這個比較困難,涉及到紋理影象的處理等方法。
好了,既然邊緣提取是要保留影象的灰度變化劇烈的區域,從數學上,最直觀的方法就是微分
(對於數字影象來說就是差分),在訊號處理的角度來看,也可以說是用高通濾波器,即保留高頻訊號。
這是最關鍵的一步,在此之前有時需要對輸入影象進行消除噪聲的處理。
用於影象識別的邊緣提取往往需要輸出的邊緣是二值影象,即只有黑白兩個灰度的影象,其中
一個灰度代表邊緣,另一個代表背景。此外,還需要把邊緣細化成只有一個畫素的寬度。總的說來邊緣
提取的步驟如下:
1,去噪聲
2,微分運算
3,2值化處理
4,細化
第二步是關鍵,有不少書把第二步就直接稱為邊緣提取。實現它的演算法也有很多,一般的影象
處理教科書上都會介紹好幾種,如拉普拉茲運算元,索貝爾運算元,羅伯特運算元等等。這些都是模板運算,
首先定義一個模板,模板的大小以3*3的較常見,也有2*2,5*5或更大尺寸的。運算時,把模板中心對
應到影象的每一個畫素位置,然後按照模板對應的公式對中心畫素和它周圍的畫素進行數學運算,算出
的結果作為輸出影象對應畫素點的值。
需要說明的是,模板運算是影象的一種處理手段--鄰域處理,有許多影象增強效果都可以採用
模板運算實現,如平滑效果,中值濾波(一種消除噪聲的方法),油畫效果,影象的凹凸效果等等。這些
演算法都比較簡單,為人們常用。
關於前面提到的幾種邊緣提取運算元(拉普拉茲運算元,索貝爾運算元,羅伯特運算元),教科書上都有
較為詳細的介紹,我這裡不多說了,(手頭上沒有教科書,也懶得翻譯英文資料),如果你們有時間,可
以把這些方法的具體情況仔細介紹一下。這裡對拉普拉茲運算元和索貝爾運算元補充兩句。拉普拉茲運算元是
2階微分運算元,也就是說,相當於求取2次微分,它的精度還算比較高,但對噪聲過於敏感(有噪聲的情
況下效果很差)是它的重大缺點,所以這種運算元並不是特別常用。索貝爾運算元是最常用的運算元之一(它是
一種一階運算元),方法簡單效果也不錯,但提取出的邊緣比較粗,要進行細化處理。另外,索貝爾運算元
也可提取出影象邊緣的方向資訊來,有文章論證過,在不考慮噪聲的情況下,它取得的邊緣資訊誤差不
超過7度。
順便說一句,往往我們在進行邊緣提取時只注意到位置資訊,而忽略了邊緣的方向。事實上,
影象的邊緣總有一定的走向,我們可以用邊緣曲線的法線方向(和切線垂直的直線)來代表邊緣點的方向
。在影象識別的應用中,這個方向是非常重要的資訊。
上面的幾種運算元是屬於比較簡單的方法,邊緣提取的精度都不算特別高,下面介紹幾種高階算
法。首先是馬爾(Marr)運算元,馬爾是計算機視覺這門學問的奠基人,很了不起,但這些理論很難懂。他
提出的邊緣提取方法可以看成兩個步驟,一個是平滑作用來消除噪聲,另一個是微分提取邊緣,也可以
說是由兩個濾波器組成,低通濾波去除噪聲,高通濾波提取邊緣。人們也稱這種方法為LOG濾波器,這也
是根據它數學表示式和濾波器形狀起的名字。也可以採用模板運算來實現這種演算法,但模板的大小一般
要在7*7以上,所以運算複雜程度比索貝爾運算元等要大不少,運算時間當然也長許多。
另外一種非常重要的演算法是坎尼(Canny)運算元,這是坎尼在1986年寫的一篇論文裡仔細論述的。
他給出了判斷邊緣提取方法效能的指標。而坎尼運算元也是影象處理領域裡的標準方法,也可以說是預設
的方法。比較奇怪的是,國內的影象處理教科書中,介紹坎尼運算元的很少。本人見過的書中,鄭南寧的
‘計算機視覺與模式識別’(1998年),算是介紹的比較詳細的。坎尼運算元在使用時要提供給一些引數,
用於控制演算法的效能,實際上,對於不同的影象或不同的邊緣提取目的,應該提供不同的引數,以達到
最佳效果。它也有模板運算方法,模板的大小也比較大,和提供的引數有關,標準的大小差不多是17*17
,可以根據運算元的可分離性用快速演算法(否則就會慢的一塌糊塗),坎尼運算元的2值化也很有特色,具有
一定的智慧性。
還有一種演算法:Shen-Castan運算元,大概可稱為沈峻運算元,總之是中國人的成果,效果和坎尼
運算元不相上下,這種演算法在對邊緣提取好壞的判別標準上有些不同。(這種方法我沒用過,好象編起程
序來,要比坎尼運算元還複雜)
在實際的影象處理與識別應用中,有時需要根據被處理影象的種類以及實際目的,量身定做算
法,邊緣提取也是一樣,但是基本原理都是一樣的。