空間域圖像增強和邊緣檢測


半夜起來做了WY的筆試題,感覺知識掌握的很不好。

其中有一問答題關於邊緣檢測算子,雖然都知道這幾種算子,但是說不上來它們各自的有缺點及應用,現在來總結一下網上的資料。

圖像增強的過程中,通常利用各種平滑濾波算法來消除噪聲。而通常在圖像中,圖像的主要能量集中在低頻部分,噪聲和邊緣往往集中在高頻部分。所以平滑濾波不僅使噪聲減少,圖像的邊緣信息也會損失,圖像的邊緣也會變的模糊。為了減少這種不利的效果,通常利用圖像銳化來是邊緣變得清晰。銳化的目的是讓圖像的邊緣及細節變得清晰。平滑后的圖像變得模糊,主要原因是圖像經過了平均或積分運算,因此我們可以對其進行逆運算如微分,使其變的清晰。微分運算是求信號的變換率,由傅立葉變換的微分性質可知,微分運算具有較強高頻分量作用。從頻率域來考慮,圖像模糊的實質是因為其高頻分量被衰減,因此可以用高通濾波器來使圖像清晰。但要注意能夠進行銳化處理的圖像必須有較高的信噪比,否則銳化后圖像信噪比反而更低,從而使得噪聲增加的比信號還要多,因此一般是先去除或減輕噪聲后再進行銳化處理。

Roberts、Sobel、Prewitt得算子主要是基於空間域的濾波器,也就是空域微分法。

 

一階微分算子:

一階微分主要指梯度模運算,圖像的梯度模值包含了邊界及細節信息。梯度模算子用於計算梯度模值,通常認為它是邊界提取算子,具有極值性、位移不變性和旋轉不變性。

圖像在點(x,y)處的梯度定義為一個二維列矢量:

梯度的幅值為:                                          梯度的方向在f(x,y)最大變換率方向上為:

 

                         

 對於離散函數f(x,y)可用差分代替微分,差分可取為后向差分,前向差分。在x,y方向上的一階向后差分分別定義為:

梯度定義為:

其幅值和方向分別為:

在實際應用中,梯度的模還有很多近似式,如使用x,y方向上差分絕對值替代模來度量,梯度的幅值就是,最大變化量單位距離所增加的量。在邊緣部分時這個增量會比較大,因此梯度幅值也就較大。而在灰度變換平緩的區域幅值也就小,灰度不變的區域幅值為零。。我們根據得到的梯度值來返回像素的值,如將梯度值大的像素設置成白色,梯度值小的設置為黑色,這樣就可以將邊緣提取出來了,或者是加強梯度值大的像素灰度值就可以突出細節了達到了銳化的目的。

根據梯度值,進而對像素的處理一般有三種方式:銳化是要突出細節(邊界),所以要對邊緣的像素加強(比如直接用梯度值作為像素的灰度或者RGB的分量),而邊緣檢測只要根據設置的閥值,超過閥值的像素灰度設為0,否則設為255。

1)輔以閥值判斷    設T為閥值,像素的梯度值大於T,則像素的灰度(或者RGB的分量)加上某一個值(如100),加上某一個值(如100)像素的灰度值(或RGB的分量值)后若大於255,取255

   

 

 2)設以某一特定值     設t為閥值,像素的梯度值大於T,則像素的灰度(或者RGB的分量)設置為某一定值La    

 

 3)二值化圖像     設T為閥值,像素的梯度值大於T,則像素的灰度(或者RGB的分量)設置為255,否則設置為0     


根據圖像邊界(細節,邊緣)的拓撲結構,一階微分銳化具體又分為單方向的一階微分銳化和無方向的微分銳化          

 

單方向的一階銳化是指對某個特定方向上的邊緣(細節)信息的進行加強。最簡單的單方向一階銳化就是水平方向與垂直方向上的銳化。        

水平方向的銳化非常簡單,通過一個可以檢測出水平方向上的像素值的變化模板來實現。

 

垂直方向需要改變算子方向:

問題:單方向銳化的計算結果中出現了小於零的像素值?

       方法1:整體加一個正整數,以保證所有的像素值均為正。比如+128,還有小於0的則視為0,若有大於255視為255處理, 這樣做的結果是:可以獲得類似浮雕的效果。

       方法2:將所有的像素值取絕對值。這樣做的結果是,可以獲得對邊緣的有方向提取。

 

前面的單一方向銳化處理結果對於人工設計制造的具有矩形特征物體(例如:樓房、漢字等)的邊緣的提取很有效。但是,對於不規則形狀(如:人物)的邊緣提取,則存在信息的缺損。

為了解決上面的問題,就希望提出對任何方向上的邊緣信息均敏感的銳化算法。因為這類銳化方法要求對邊緣的方向沒有選擇,所有稱為無方向的銳化算法。

 

邊緣檢測算子檢查每個像素的領域並對灰度變化率進行量化,通常也包括方向的確定。大多數是基於方向當屬模板求卷積的方法。

將所有的邊緣模板逐一作用於圖像中的每一個像素,產生最大輸出值的邊緣模板方向表示該點邊緣的方向,如果所有方向上的邊緣模板接近於零,該點處沒有邊緣;如果所有方向上的邊緣模板輸出值都近似相等,沒有可靠邊緣方向   

卷積過程可以看做簡單的加權求和過程 :

 

 

 

下面介紹幾種一階無向算子:

Roberts:又稱交叉微分算子,算法如下

可用如下kernel表示

 Sobel:公式如下

 其中A是原圖像, Gx,Gy分別為水平和豎直方向算子與原圖像的卷積。

 圖中所示的2 卷積核Gx 、Gy 形成Sobel 算子。一個核對通常的垂 直邊緣響應最大 ,而另一個核對水平邊緣響應最大。 

 特點:銳化的邊緣信息較強,計算量相對也較小

 Priwitt:公式如下

 A為原圖像,Gx,Gy分別為水平和豎直方向算子與原圖像的卷積。

 Prewitt算子在一個方向求微分,而在另一個方向求平均,因而對噪聲相對不敏感,有抑制噪聲作用。但是像素平均相當於對圖像的低通濾波,所以Prewitt算子對邊緣的定位不如Roberts算子。

 特點:與Sobel相比,有一定的抗干擾性,圖像效果比較干凈。

 

 

幾種方法的效果比較

       Sobel算法與Priwitt算法的思路相同,屬於同一類型,因此處理效果基本相同。

       Roberts算法的模板為2*2,提取信息較弱。

       單方向銳化經過處理之后,也可以對邊界進行增強。

 

另外Canny算子也算是一種一階微分算子,不同之處在於canny算子需要做一系列處理來實現最優邊緣的檢測其步驟一般包括:

     step1:用高斯濾波器平滑圖象

     step2:用一階偏導的有限差分來計算梯度的幅值和方向

     step3:對梯度幅值進行非極大值抑制

     step4:用雙閾值算法檢測和連接邊緣

 

二階微分算子:

在某些灰度變換情況下一階微分算子往往不能准確的描述,如下:

而采用二階微分算子能夠獲得更加豐富的細節信息。

1)  對應突變形的細節,通過一階微分的極值點,二階微分的過0點均可以檢測處理

2)對應細線行的細節,通過一階微分的過0點,二階微分的極小值點均可以檢測處理。

3)對應漸變的細節,一般情況很難檢測,但二階微分的信息比一階微分的信息略多。

 

二階微分算子的推導:

 

Laplacian算子:將上述的公式寫成模板化即為Laplacian算子

為了改善銳化效果,可以脫離微分的計算原理,在原有的算子基礎上,對模板系數進行改變,獲得Laplacian變形算子:

其中H2是在H1的基礎上在考慮45°和135°方向的結果

Laplacian算子對噪聲比較敏感,Laplacian算子有一個缺點是它對圖像中的某些邊緣產生雙重響應。所以圖像一般先經過平滑處理,通常把Laplacian算子和平滑算子結合起來生成一個新的模板。因此我們介紹LoG算子。

LoG: Laplacian of Gaussian 是一種將該方法將高斯濾波和拉普拉斯檢測算子結合在一起進行邊緣檢測的方法,故稱為Log(Laplacian of Gassian )算法。

主要步驟:

1.濾波:首先對圖像f(x,y)進行平滑濾波,其濾波函數根據人類視覺特性選為高斯函數,即:

其中,G(x,y)是一個圓對稱函數,其平滑的作用是可通過  來控制的。將圖像 G(x,y)與f(x,y) 進行卷積,可以得到一個平滑的圖像,即:

2.增強:對平滑圖像g(x,y) 進行拉普拉斯運算 

 

3.檢測:邊緣檢測判據是二階導數的零交叉點(即h(x,y)=0  的點)並對應一階導數的較大峰值。

LOG濾波器有以下特點 :

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

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

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

LOG濾波器也有它的缺點:

當邊緣的寬度小於 算子寬度時 ,由於過零點的斜坡融合將會丟失細節。

LOG濾波器有無限長的拖尾 ,若取得很大尺寸,將使得計算不堪重負。但隨着的增加 ,LOG濾波器幅值迅速下降 ,當r大於一定程度時 ,可以忽略模板的作用 ,這就為節省計算量創造了條件。實際計算時 ,常常取n×n 大小的 LOG濾波器 , n≈3σ。

另外 ,LOG 濾波器可以近似為兩個指數函數之差,即DoG。

 

 參考博客:http://dsqiu.iteye.com/blog/1638589

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM