版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章圖像的特征提取7.1點檢測 7.1.1Moravec角點檢測算子
7.1.2SUSAN角點檢測算子 7.1.3Harris角點檢測算子7.2邊緣檢測 7.2.1邊緣的模型、檢測算子及基本步驟 7.2.2基于梯度的邊緣檢測 7.2.3基于拉普拉斯算子的邊緣檢測 7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)7.3邊緣輪廓檢測 7.3.1局部處理方法
第7章圖像的特征提取 7.3.2邊緣跟蹤方法 7.3.3OpenCV實現(xiàn)邊緣輪廓繪制7.4Hough變換 7.4.1Hough直線變換 7.4.2Hough變換圓檢測 7.4.3廣義Hough變換 7.4.4OpenCV實現(xiàn)Hough變換
7.1
點檢測點特征是目前基于特征的配準(zhǔn)算法所用到的主要特征。與邊緣或區(qū)域特征相比,點特征指示的數(shù)據(jù)量明顯要少很多;點特征對于噪聲的敏感度也比另外兩種特征低;在灰度變化或遮掩等情況下,點特征也比邊緣和區(qū)域特征更為可靠。圖像中“點”特征的含義是,它的灰度幅值與其鄰域值有著明顯的差異。檢測這種點特征首先將圖像進(jìn)行低通濾波,然后把平滑后的每一個像素的灰度值與它相鄰的4個像素的灰度值比較,當(dāng)差值足夠大時可檢測出點特征來。點特征包括角點、切點和拐點,它們是目標(biāo)形狀的重要特征。角點是目標(biāo)邊界上曲率超過一定閾值的局部極大值點;切點是直線與圓弧的平滑過渡點;拐點是凹圓弧與凸圓弧的平滑過渡點7.1.1
Moravec角點檢測算子Moravec算子是利用灰度方差提取特征點,計算每個像素在水平(horizontal)、垂直(vertical)、對角線(diagonal)和反對角線(anti-diagonal)四個方向上的灰度方差,選擇四個值中最小值為該像素的角點響應(yīng)函數(shù),最后通過局部非極大值抑制檢測出角點。Moravec角點檢測算法操作步驟如下。(1)計算各像素四個方向上的灰度方差及該像素的角點響應(yīng)函數(shù)。的窗口以及窗口內(nèi)四個方向如圖7-1所示。在以像素為中心的圖像窗口中,利用式(7-1)計算其四個方向上像素灰度方差:7.1.1
Moravec角點檢測算子圖7-1Moravec算法圖像窗口其中,
。四個值中的最小值為該像素的角點響應(yīng)函數(shù):
(7-2)7.1.1
Moravec角點檢測算子(2)給定一經(jīng)驗閾值,將響應(yīng)值大于該閾值的點作為候選角點。閾值的選擇應(yīng)以候選角點中包含足夠多的真實角點而又不含過多的偽角點為原則。(3)局部非極大值抑制。在一定大小的窗口內(nèi),將候選點中響應(yīng)值不是極大者全部去掉,僅留下一個響應(yīng)值最大者,則該像素即為一個角點。Moravec算子最顯著的優(yōu)點是算法簡單、運算速度快。然而存在的問題有:①只利用了四個方向上的灰度變化實現(xiàn)局部相關(guān),因此響應(yīng)是各向異性的;②該算子的角點響應(yīng)函數(shù)未對噪聲進(jìn)行抑制,故對噪聲敏感;③選取最小值作為響應(yīng)函數(shù)進(jìn)行判定,所以對邊緣信息比較敏感。7.1.2SUSAN角點檢測算子SUSAN(smalluni-valuesegmentassimilatingnucleus)算子可用于圖像的角點特征檢測和邊緣檢測,但是角點檢測效果比邊緣檢測更好。此外,SUSAN算法無須進(jìn)行梯度計算,使得算法對局部噪聲不敏感,抗噪能力強。1. SUSAN角點檢測原理SUSAN算子是基于圖像的幾何觀測,像素分類為邊緣、角點和扁平區(qū),直接利用圖像的灰度特征進(jìn)行檢測。如圖7-2所示,SUSAN算法采用一個圓形模板,模板圓心作為核,圓形區(qū)城內(nèi)的每個像素的灰度值與中心像素的灰度值比較,灰度值與中心像素灰度值相近的像素組成的區(qū)域稱為USAN區(qū)域,即同化核分割相似值區(qū)域。7.1.2SUSAN角點檢測算子圖7-2SUSAN算子的USAN示意圖7.1.2SUSAN角點檢測算子圖7-2(b)顯示了不同位置的USAN區(qū)域面積大小。USAN區(qū)域包含了圖像結(jié)構(gòu)的以下信息:①在a位置,核心點在角點上,USAN區(qū)域面積達(dá)到最小:②在b位置,核心點在邊緣,USAN區(qū)域面積接近最大值的一半:③在c位置,核心點處于暗色區(qū)之內(nèi),有大于半數(shù)的點在USAN中,USAN區(qū)域面積接近最大值??梢钥闯?,USAN區(qū)域含有圖像某個局部區(qū)域的強度特征。SUSAN算法正是基于這一原理,通過判斷核心點子鄰域中的相似灰度像素的比率來確定角點。將模板中的各點與核心點(當(dāng)前點)的灰度值用下面的相似比較函數(shù)來進(jìn)行比較:7.1.2SUSAN角點檢測算子(7-3)式(7-3)中,為核心點的位置,
為模板M
中其他像素的位置,
和
分別表示
和
處像素的灰度;t表示灰度差值閾值;函數(shù)c表示比較輸出結(jié)果,由模板中所有像素參與運算得出。圖7-3所示模板為37像素模板,最小的模板為
模板。通常對式(7-3)采用以下更加穩(wěn)健的形式:(7-4)7.1.2SUSAN角點檢測算子USAN的大?。娣e)可由下式計算出。(7-5)圖7-337像素圓形模板7.1.2SUSAN角點檢測算子該參數(shù)
決定了USAN區(qū)域各點之間最大的灰度差位。將
與一個幾何閾值g比較以做出判斷。一般情況下,如果模板能取到的最大S值為
,對于37像素模板,
,該閾值設(shè)為
以給出最優(yōu)的噪聲消除性能。如果提取邊緣,則閾值設(shè)為
。SUSAN算法的角點響應(yīng)函數(shù)可寫為(7-6)對其應(yīng)用局部非極大值抑制后可得到角點。7.1.2SUSAN角點檢測算子2. SUSAN角點檢測算法(1) 在圖像的核心點處放置一個37像素的圓形模板;(2) 用式(7-5)計算圓形模板中和核心點有相似灰度值的像素個數(shù);(3) 用式(7-6)產(chǎn)生角點響應(yīng)函數(shù),函數(shù)值大于某一特定閾值的點被認(rèn)為是角點。7.1.2SUSAN角點檢測算子3. SUSAN算子存在的問題SUSAN算子不需要計算圖像的導(dǎo)數(shù),抗噪聲能力強,可以檢測所有類型的角點。但SUSAN算子仍然存在三個問題。(1) 相似比較函數(shù)計算復(fù)雜。(2) 圖像中不同區(qū)域處目標(biāo)與背景的對比程度不一樣,取固定閾值不符合實際情況(3) USAN的三種典型形狀為理想情況,即認(rèn)為與核心點處于同一區(qū)域物體或背景的像素與核心點具有相似灰度值,而另一區(qū)域則與它相差較大。實際中,由于圖像邊緣灰度的漸變性,與核值相似的像素并不一定與它屬于同一物體或背景,而離核心點較遠(yuǎn),與它屬于同一物體或背景的像素灰度值卻可能與核值相差較遠(yuǎn)。7.1.3Harris角點檢測算子Harris角點檢測算子又稱為Plessey算法,是由Moravec算子改進(jìn)而來的。Harris算子引入了信號處理中自相關(guān)函數(shù)理論,將角點檢測與圖像的局部自相關(guān)函數(shù)緊密結(jié)合,通過特征值分析來判斷是否為角點。Moravec算子由于只考慮了四個方向上的灰度變化,所以是各向異性的。而Harris定義了任意方向上的自相關(guān)值,使之能夠表現(xiàn)各個方向上的變化特性,且通過高斯窗加權(quán),起到了抗噪作用,它的區(qū)域灰度變化計算式為:(7-7)其中,
表示圖像中
處的灰度值;
為高斯濾波器,
7.1.3Harris角點檢測算子當(dāng)圖像的局部平移量
很小時,局部平移圖像可以用一階泰勒級數(shù)來近似:(7-8)式中,和分別表示圖像在x和y方向上的導(dǎo)數(shù)。將式(7-8)代入式(7-7)中可得(7-9)式中,M是
的對稱矩陣。
(7-10)7.1.3Harris角點檢測算子
M反映了圖像坐標(biāo)
局部鄰域的圖像灰度結(jié)構(gòu)。假設(shè)矩陣M的特征值分別為和,這兩個特征值反映了局部圖像的兩個主軸的長度,而與主軸的方向無關(guān),因此形成一個旋轉(zhuǎn)不變描述。這兩個特征值可能出現(xiàn)三種情況:(1)如果和的值都很小,這時的局部自相關(guān)函數(shù)是平滑的(例如,任何方向上M的變化都很小),局部圖像窗口內(nèi)的圖像灰度近似為常數(shù)。(2)如果一個特征值較大而另一個較小,此時局部自相關(guān)是像山脊一樣的形狀。局部圖像沿山脊方向平移引起的M變化很小,而在其正交方向上平移引起的M較大,這表明該位置位于圖像的邊緣。(3)如果兩個特征值都較大,這時局部自相關(guān)函數(shù)是尖銳的峰值。局部圖像沿任何方向的平移都將引起M較大的變化,表明該點為特征點。7.1.3Harris角點檢測算子為了避免求矩陣M特征值,可以采用
和
來間接代替和。根據(jù)式(7-10),有(7-11)角點響應(yīng)函數(shù)可以寫成(7-12)其中,k是常數(shù)因子,一般取為
。只有當(dāng)圖像中像素的R值大于一定的閾值,且在周圍的八個方向上是局部極大值時才認(rèn)為該點是角點。圖像中角點的位置最后通過尋找角點的響應(yīng)函數(shù)的局部極值來獲取。7.2邊緣檢測邊緣檢測算子(edgedetectors)是一組用于在亮度函數(shù)中定位變化的非常重要的局部圖像預(yù)處理方法,邊緣是亮度函數(shù)發(fā)生急劇變化的位置。神經(jīng)學(xué)和心理學(xué)的研究表明,圖像中突變的位置對圖像感知很重要。在某種程度上,邊緣不隨光照和視角的變化而變化。如果只考慮那些強度大的邊緣元素,這樣就大幅減少了圖像的數(shù)據(jù)量。而在很多情形下,這種數(shù)據(jù)減少并不會損害對圖像內(nèi)容的理解圖像邊緣是圖像的最基本特征,主要存在于目標(biāo)與目標(biāo)、目標(biāo)與背景、區(qū)域與區(qū)域(包括不同色彩)之間。它常常意味者一個區(qū)域終結(jié)和另一個區(qū)域的開始。從本質(zhì)上講,圖像邊緣是以圖像局部特征不連續(xù)的形式出現(xiàn)的,是圖像局部特征突變的一種表現(xiàn)形式,例如,灰度的突變、顏色的突變、紋理結(jié)構(gòu)的突變等。邊緣檢測(edgedetection)實際上就是找出圖像特征發(fā)生變化的位置。7.2.1邊緣的模型、檢測算子及基本步驟灰度的空間變化模式隨著引起其變化的原因的不同而有所不同。因此,在幾乎所有的邊緣檢測算法中,都把幾種典型的灰度的空間變化模式假定為邊緣的模型,并對對應(yīng)于那些模型的灰度變化進(jìn)行檢測。首先,在標(biāo)準(zhǔn)的邊緣模型中,采用局部的單一直線邊緣作為邊緣的空間特征,因而可根據(jù)與直線正交的方向上的灰度變化模式對邊緣的類型進(jìn)行分類。如圖7-4所示為幾種常見的邊緣模型。第1行為二維圖像顯示,第2行為灰度斷面(垂直于邊緣方向)顯示。圖7-4(a)所示的階躍邊緣是理想的邊緣,圖7-4(b)所示的斜坡邊緣表示它已模糊時的邊緣,幾乎所有的邊緣檢測算法均考慮這兩種邊緣模型。圖7-4(c)所示的山型的尖峰狀灰度變化,是對寬度較窄的線經(jīng)模型化后得到的邊緣,不過,若線寬變粗的話,則山會呈現(xiàn)出兩條平行的階躍邊緣的7.2.1邊緣的模型、檢測算子及基本步驟組合形狀。這意味著邊緣模型隨著作為處理對象的圖像的分辨率或邊緣檢測算法中參與運算的鄰域的大小而變化。圖7-4(d)所示的屋項邊緣,可認(rèn)為是圖7-4(c)中邊緣已模糊時的邊緣。圖7-4邊緣的模型對于圖7-4(a)中的理想階躍邊緣,圖像邊緣是清晰的。由于圖像采集過程中光學(xué)系統(tǒng)成像、數(shù)字采樣、光照條件等不完善因素的影響,實際圖像邊緣是模糊的,因而階躍邊緣變成斜坡邊緣,斜坡部分與邊緣的模糊程度成比例。7.2.1邊緣的模型、檢測算子及基本步驟圖像的邊緣可以用灰度變化的一階或二階導(dǎo)數(shù)來表示。檢測階躍邊緣實際上就是要找出使灰度變化的一階導(dǎo)數(shù)取到極大值和二階導(dǎo)數(shù)具有零交叉的像素。典型的邊緣檢測算法包含以下四個步驟。(1)濾波:邊緣檢測算法主要是基于圖像強度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計算對噪聲很敏感,因此必須通過濾波來改善與噪聲有關(guān)的邊緣檢測算法的性能。需要指出,大多數(shù)濾波器在降低噪聲的同時也導(dǎo)致邊緣強度的損失。因此,增強邊緣和降低噪聲之間需要折中。(2)增強:增強邊緣的基礎(chǔ)是確定圖像各點鄰域灰度的變化值。增強算法可以將鄰域(或局部)灰度值有顯著變化的凸顯出來,而檢測圖像灰度變化的最基本的方法,是求圖像函數(shù)
的微分。函數(shù)的微分中,有偏微分、高階微分等各種微分形式,但在邊緣檢測中最常用的微分是梯度(gradient)
和拉普拉斯算子(Laplacian)
。7.2.1邊緣的模型、檢測算子及基本步驟(3)檢測:在圖像中有許多點的梯度幅值比較大,而這些點在特定的應(yīng)用領(lǐng)域中并不都是邊緣,所以應(yīng)該用某種方法來確定哪些點是邊緣點。最簡單的邊緣檢測判據(jù)是梯度幅值閾值判據(jù)。也就是說,通過使用差分、梯度、拉普拉斯算子及各種高通濾波進(jìn)行邊緣增強后,只要再進(jìn)行一次閾值化處理,便可以實現(xiàn)邊緣檢測。(4)定位:如果某一應(yīng)用場合要求確定邊緣位置,則邊緣的位置可在亞像素分辨率上來估計,邊緣的方位也可以被估計出來。在邊緣檢測算法中,前三個步驟用得十分普遍。這是因為大多數(shù)場合下,僅僅需要邊緣檢測算法指出邊緣出現(xiàn)在圖像某一像素的附近,而沒有必要指出邊緣的精確位置或方向。最近的二十年里發(fā)展了許多邊緣檢測算法,本章僅介紹常用的幾種。一階檢測算子相當(dāng)于一階微分法,二階邊緣檢測算子相當(dāng)于高一階微分處理。7.2.2基于梯度的邊緣檢測基于梯度的邊緣檢測是灰度變化的一階微分導(dǎo)數(shù),邊緣是圖像中灰度發(fā)生急劇變化的地方,基于梯度的邊緣檢測算法以此為理論依據(jù),它也是最原始、最基本的邊緣檢測方法。圖像的梯度描述灰度變化速率。因此,通過梯度可以增強圖像中的灰度變化區(qū)域,進(jìn)一步判斷增強的區(qū)域邊緣。邊緣是賦給單個像素的性質(zhì),用圖像函數(shù)在該像素一個鄰域處的特性來計算。它是一個具有幅值(強度)(magnitude)和方向(direction)的矢量(vectorvariable)。邊緣的幅值是梯度的幅值,邊緣方向?是梯度方向θ旋轉(zhuǎn)〖-90〗^°的方向。梯度方向是函數(shù)最大增長的方向,例如,從黑[f(i,j)=0]到白[f(i,j)=255]。如圖7-5所示,封閉的曲線是具有相同亮度的線,0°方向指向東。7.2.2基于梯度的邊緣檢測圖7-5梯度方向和邊緣方向在圖像分析中,邊緣一般用于尋找區(qū)域的邊界。假定區(qū)域具有均勻的亮度,其邊界就是圖像函數(shù)變化的位置。因此,在理想情況下具有高邊緣幅值的像素中沒有噪聲??梢娺吔绾推溥吘壟c梯度方向垂直。圖7-6給出了幾種標(biāo)準(zhǔn)的邊緣剖面。邊緣檢測算子一般是根據(jù)某種類型的邊緣剖面調(diào)制的。7.2.2基于梯度的邊緣檢測圖7-6典型的邊緣剖面對于二維圖像函數(shù)
,在其坐標(biāo)上的梯度可以定義為一個二維列向量,即(7-13)梯度矢量的大小用梯度幅值來表示:(7-14)7.2.2基于梯度的邊緣檢測梯度幅值是指在
位置處灰度的最大變化率。一般來講,也將
稱為梯度梯度矢量的方向角,是指在
位置處灰度最大變化率方向,表示為(7-15)其中,是從x軸到點
的角度。梯度幅值計算式(7-14)對應(yīng)歐氏距離,為了減少計算量,梯度幅值也可按照城區(qū)距離和棋盤距離來計算,分別表示為(7-16)(7-17)7.2.2基于梯度的邊緣檢測對數(shù)字圖像而言,偏導(dǎo)數(shù)
和
可以用差分來近似。數(shù)字圖像在本質(zhì)上是離散的。因此,含有導(dǎo)數(shù)的式(7-13)和式(7-15)必須用差分(differences)來近似。圖像f在縱向(固定x)和橫向(固定y)的一階差分由下式給出:(7-18)其中n是整數(shù),通常取1。數(shù)值n的選擇既要足夠小以便較好地近似導(dǎo)數(shù),又要足夠大以便忽略圖像函數(shù)的不重要的變化。差分的對稱表達(dá)式為(7-19)這種形式并不常用,因為式(7-19)忽略了當(dāng)前像素(x,y)本身的影響。7.2.2基于梯度的邊緣檢測圖7-7所示模板表示圖像中
像素區(qū)城。例如,若中心像素
表示
,那么表示
,
的表示
,以此類推。那么根據(jù)上述模板,最簡單的一階偏導(dǎo)數(shù)的計算公式可以表示為(7-20)式(7-20)中像素間的關(guān)系如圖7-8(a)所示。這種梯度計算方法也稱為直接差分,直接差分的卷積模板如圖7-8(b)所示。
圖7-7計算模板7.2.2基于梯度的邊緣檢測圖7-8直接差分法7.2.2基于梯度的邊緣檢測1. Roberts算子Roberts算子是最老的算子之一,是一種斜向偏差分的梯度計算方法,梯度的大小代表邊緣的強度,梯度的方向與邊緣方向?垂直。由于它只使用當(dāng)前像素的2×2領(lǐng)域,計算非常簡單。如圖7-9所示,圖像中導(dǎo)數(shù)計算可以采用交叉差分操作,即(7-21)上式即為Roberts交叉梯度算子,如圖7-9(a)所示,也可采用圖7-9(b)所示的卷積模板實現(xiàn)上述操作。如果按照歐氏距離和城區(qū)距離計算梯度幅值,則式(7-14)和(7-16)可進(jìn)一步分別寫成(7-22)7.2.2基于梯度的邊緣檢測(7-23)
圖7-9Roberts算子式(7-23)與圖7-9(b)所示的卷積模板相對應(yīng)。采用Roberts算子計算圖像梯度時,無法計算出圖像的最后一行(列)像素的梯度,這時一般采用前一行(列)的梯度值近似代替。7.2.2基于梯度的邊緣檢測2. Sobel算子Sobel算子把重點放在接近模板中心的像素點,采用
模板可以避免在像素之間內(nèi)插點上計算梯度,對于中心像素
,使用以下公式來計算其偏導(dǎo)數(shù):(7-24)該公式所述即為Sobel算子,其導(dǎo)數(shù)計算也可以采用圖7-10所示的卷積模板。Sobel算子的特點是對稱的一階差分,對中心加權(quán)具有一定的平滑作用常數(shù)c通常取2。7.2.2基于梯度的邊緣檢測圖7-10Sobel算子7.2.2基于梯度的邊緣檢測3. Prewitt算子Prewitt算子與Sobel算子類似,只是Prewitt算子沒有把重點放在接近模板中心的像素。中心像素
的偏導(dǎo)數(shù)計算式為(7-25)Prewitt算子導(dǎo)數(shù)計算也可以采用圖7-11所示的卷積模板。Prewitt算子的特點是對稱的一階差分,對中心加權(quán)具有一定的平滑作用常數(shù)c通常取1。上述梯度法對和各用一個模板,需要兩個模板組合起來構(gòu)成一個梯度算子。常用的三種梯度算子(Roberts算子、Sobel算子和Prewitt算子)的導(dǎo)數(shù)計算模板分別7.2.2基于梯度的邊緣檢測如圖7-9(b)、圖7-10(b)和圖7-11(b)所示。各模板的系數(shù)和均等于零,表明在灰度均勻區(qū)域的響應(yīng)為零。
圖7-11Prewitt算子7.2.2基于梯度的邊緣檢測4. Kirsch算子Kirsch算子是一種方向算子,利用一組模板對圖像中的同一像素進(jìn)行卷積運算,然后選取其中最大值作為邊緣強度,而將與之對應(yīng)的方向作為邊緣方向。相對于梯度算子的優(yōu)點是,Kirsch算子不只考慮水平和垂直方向,還可以檢測其他方向上的邊緣,但計算量大大增加。常用的8方向Kirsch(
)模板如圖7-12所示,方向間的夾角為
。圖像中每個像素都有8個模板對某個特定方向邊緣做出最大響應(yīng),最大響應(yīng)模板的序號構(gòu)成了對邊緣方向的編碼。7.2.2基于梯度的邊緣檢測圖7-12八方向kirsch算子模板Kirsch算子檢測過程描述為:把表示不同方向邊緣的8個模板分別當(dāng)作加權(quán)矩陣與圖像進(jìn)行卷積運算,選擇輸出最大值的模板,把該模板表示的邊緣方向和卷積運算結(jié)果作為邊緣上的灰度變換值來輸出。7.2.2基于梯度的邊緣檢測梯度幅值閾值化處理:利用上述算子計算出圖像的梯度幅值便完成了邊緣增強,然后采用梯度幅值閾值判據(jù)進(jìn)一步實現(xiàn)邊緣檢測,以二值圖像的輸出方式作為邊緣檢測結(jié)果,(7-26)式中,
表示輸出邊緣檢測結(jié)果;t表示梯度幅值閾值;LG和LB表示兩個不同的灰度峰值,如1和0。梯度算子在圖像邊緣附近產(chǎn)生較寬的響應(yīng),通常需要對邊緣進(jìn)行細(xì)線化操作,這在一定程度上影響了邊緣定位的精度。7.2.3基于拉普拉斯算子的邊緣檢測基于梯度的邊緣檢測是灰度變化的二階微分導(dǎo)數(shù),一階導(dǎo)數(shù)的局部最大值對應(yīng)二階導(dǎo)數(shù)的零交叉點,這意味著可以通過尋找圖像函數(shù)的二階導(dǎo)數(shù)的零交叉點來找到邊緣點,由此產(chǎn)生了基于拉普拉斯算子的邊緣檢測算法。圖像函數(shù)
在x方向上的二階偏導(dǎo)數(shù)近似表示為:
(7-27)這一近似式是以坐標(biāo)
為中心的。用
替換i,得到
7.2.3基于拉普拉斯算子的邊緣檢測它是以坐標(biāo)
為中心的二階偏導(dǎo)數(shù)的理想近似式。類似地,在y方向的二階偏導(dǎo)數(shù)表示為(7-28)1. 拉普拉斯算子拉普拉斯算子是二階導(dǎo)數(shù)算子,它是一個標(biāo)量,具有各向同性(isotropic)的性質(zhì),其定義為(7-29)將式(7-28)代入式(7-29)得(7-30)7.2.3基于拉普拉斯算子的邊緣檢測顯然,式(7-30)可用圖7-13(a)所示的模板與像素
對應(yīng)鄰域內(nèi)的像素進(jìn)行卷積操作得到,模板的中心對應(yīng)圖像中的像素
。圖7-13還給出了拉普拉斯算子另外兩種常用的模板。
圖7-13常用的三種拉普拉斯算子模板7.2.3基于拉普拉斯算子的邊緣檢測2.LoG算子拉普拉斯算子一般不直接用于邊緣檢測,因為任何包含有二階導(dǎo)數(shù)的算子比只包含有一階導(dǎo)數(shù)的算子更易受噪聲的影響,對圖像計算后會增強噪聲。甚至一階導(dǎo)數(shù)很小的局部峰值也可以導(dǎo)致二階導(dǎo)數(shù)過零點。為了避免噪聲的影響,拉普拉斯算子常與平滑濾波器組合使用。常用的平滑函數(shù)為高斯函數(shù),高斯平滑濾波器對于消除正態(tài)分布噪聲是很有效的。二階高斯函數(shù)及其一、二階導(dǎo)數(shù)和拉普拉斯算子如下所示:(7-31)(7-32)7.2.3基于拉普拉斯算子的邊緣檢測(7-33)
(7-34)其中,為高斯分布的標(biāo)準(zhǔn)差,它決定了高斯濾波器的寬度。用高斯函數(shù)對圖像進(jìn)行平滑濾波,結(jié)果為:(7-35)其中,“*”表示卷積符號。圖像平滑后再應(yīng)用拉普拉斯算子,結(jié)果為(7-36)7.2.3基于拉普拉斯算子的邊緣檢測由于線性系統(tǒng)中卷積與微分的次序是可以交換的,因而:(7-37)式中,
稱為高斯—拉普拉斯(LaplacianofGaussian)算子,簡稱LoG算子,因此,LoG算子可以表示為:(7-38)在引入一個規(guī)范化的系數(shù)c后,得到LoG算子為:(7-39)7.2.3基于拉普拉斯算子的邊緣檢測其中c將掩膜元素的和規(guī)范為0。反過來的LoG算子由于其形狀常被稱為墨西哥草帽(Mexicanhat)。離散LoG算子?2G的5×5的例子如下:
該算子也被稱為墨西哥草帽(Mexicanhat)算子。因此采用LoG算子卷積圖像,相當(dāng)于使用高斯函數(shù)平滑圖像,然后對平滑結(jié)果采用拉普拉斯算子檢測圖像邊緣。這種邊緣檢測算法也稱為Marr邊緣檢測算法。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)JohnCanny于1986年提出Canny算子,它與LoG算子類似,也屬于先平滑后求導(dǎo)數(shù)的方法。Canny提出的新的邊緣檢測方法,它對受白噪聲影響的階躍型邊緣是最優(yōu)的。Canny創(chuàng)立了邊緣檢測計算理論(Computationaltheoryofedgedetection),并給出詳細(xì)的描述過程。Canny算子的最優(yōu)性與以下三個標(biāo)準(zhǔn)有關(guān):(1)檢測標(biāo)準(zhǔn):實現(xiàn)減少噪聲響應(yīng)。不丟失重要的邊緣,不應(yīng)有虛假的邊緣,它可以通過最優(yōu)平滑處理來實現(xiàn)。Canny最早表明:高斯濾波對邊緣檢測是最優(yōu)的。(2)定位標(biāo)準(zhǔn):正確性。在正確位置檢測到邊緣,實際邊緣與檢測到的邊緣位置之間的偏差最小。它可以通過非極大值抑制(non-maximumSuppression,相當(dāng)于峰值檢測)處理來實現(xiàn)。非極大值抑制返回的只是邊緣數(shù)據(jù)頂脊處的那些點,而抑制其他所有點,這樣做的結(jié)果是細(xì)化處理,非極大值抑制的輸出是正確位置上邊緣點連成的細(xì)線。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)梯度方向總是于邊緣方向垂直,通常就近取值為水平(左、右)、垂直(上、下)、對角線(右上、左上、左下、右下)等8個不同的方向。圖7-14非極大值抑制示例如圖7-14中,A、B、C三點具有相同的梯度方向(梯度方向垂直于邊緣方向)。經(jīng)過比較,A點具有最大的局部值,所以保留A點(稱為邊緣),其余兩點(B、C)被抑制(歸零)。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)(3)單響應(yīng)標(biāo)準(zhǔn):將多個響應(yīng)降低為單個邊緣響應(yīng)。這一點被第一個標(biāo)準(zhǔn)部分地覆蓋了,因為當(dāng)有兩個響應(yīng)對應(yīng)于單個邊緣時,其中之一應(yīng)該被認(rèn)為是虛假的。第三個標(biāo)準(zhǔn)解決受噪聲影響的邊緣問題,起抵制非平滑邊緣檢測子的作用。前面介紹的邊緣檢測算子均是基于微分方法,其依據(jù)是圖像的邊緣對應(yīng)一階導(dǎo)數(shù)的極大值點和二階導(dǎo)數(shù)零交叉點,這種依據(jù)只有在圖像不含噪聲的情況下才成立。假設(shè)實際圖像信號用以下公式表示:(7-40)式中,
為理想無噪聲圖像信號;
表示加性噪聲信號。應(yīng)用微分算子可以計算的是
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。雖然噪聲幅值往往很小,但我們不能認(rèn)為
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)會接近
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)因為噪聲頻率往往很高,導(dǎo)致
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)嚴(yán)重偏離
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。例如,假設(shè)噪聲為高頻正弦信號,(7-41)那么它的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)分別為(7-42)(7-43)即使a很小,當(dāng)噪聲
的頻率很高時,的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)的幅值也會變得非常大。實際中,噪聲不一定是加性的。一般而言,理想圖像信號與實際圖像信號可表示為下面的關(guān)系式:(7-44)7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)其中,
表示某種變換算子,該算子不一定是可逆的。這種情況下由
求
條件不充分,通過增加某種約束
,把它轉(zhuǎn)化為泛函最優(yōu)化問題,也就是求解
,使下式中r達(dá)到最小值,(7-45)Canny算子正是遵循這種思想求得的最優(yōu)化算子。最優(yōu)的邊緣檢測算子遵循檢測標(biāo)準(zhǔn)、定位標(biāo)準(zhǔn)和單響應(yīng)標(biāo)準(zhǔn)??傊?,就是希望在提高對圖像邊緣的敏感性的同時,能夠有效抑制噪聲的算法才是好的邊緣檢測算法。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)在圖像邊緣檢測中,抑制噪聲和邊緣精確定位是無法同時得到滿足的,也就是說,邊緣檢測算法通過圖像平滑算子濾除噪聲,但卻增加了邊緣定位的不確定性;反過來,若提高邊緣檢測算子對邊緣的敏感性,同時也提高了對噪聲的敏感性。有一種線性算子可以在抗噪聲干擾和精確定位之間提供最佳折中方案,它就是高斯函數(shù)的一階導(dǎo)數(shù),對應(yīng)于圖像的高斯函數(shù)平滑與梯度計算。Canny算子邊緣檢測算法操作步驟如下:(1)去噪,用尺度為的高斯濾波器去除圖像噪聲。將圖像
與高斯函數(shù)
進(jìn)行卷積運算,得到經(jīng)平滑濾波后的圖像(7-46)7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)(2)計算梯度的幅度與方向,使用一階有限差分近似偏導(dǎo)數(shù),計算圖像梯度的幅值和方向,計算梯度可以利用Robert、Prewitt、Sobel等算子。使用一階有限差分計算的兩個偏導(dǎo)數(shù)陣列
與
:(7-47)(7-48)梯度幅值和方向角分別為:(7-49)(7-50)7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)(3)非極大值抑制。利用(2)步梯度方向劃分,進(jìn)行梯度幅值的非極大值抑制,獲取單像素邊緣點。為了定位邊緣的位置,必須保留局部梯度最大的點,而抑制非極大值。在與邊緣垂直的方向上尋找局部最大值的過程被稱為非極大值抑制(non-maximumsuppression,簡稱NMS)。將梯度角
離散為圓周的四個扇區(qū)之一,如圖7-15所示。四個扇區(qū)的的標(biāo)號為0~3,對應(yīng)
鄰域內(nèi)元素的四種可能組合,任何通過鄰域中心的點必通過其中一個扇區(qū)。在每一點上,鄰域中心像素小于沿梯度方向的兩個相鄰像素梯度幅值,則令
。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)圖7-15四個扇區(qū)(0~3)及其相應(yīng)的比較方向(4)雙閾值處理。對邊緣圖像作滯后閾值處理,消除虛假響應(yīng),將低于閾值的所有值賦零值。閾值化后得到的邊緣圖像仍然有假邊緣存在,閾值選取得太低,會使得邊緣對比度減弱,產(chǎn)生假邊緣;閾值選取得太高將導(dǎo)致部分輪廓丟失。雙閾值算法可以解決閾值選取問題。7.2.4Canny算子邊緣檢測及OpenCV實現(xiàn)雙閾值算法是對非極大值抑制圖像
取兩個閾值t1和t2,且
,從而可以得到兩個閾值邊緣圖像
和
。由于
使用高閾值得到,因此含有很少的假邊緣,但同時也損失了有用的邊緣信息。而
的閾值較低,保留了較多的信息。于是可以以
為基礎(chǔ),以
為補充來連接圖像的邊緣。7.3邊緣輪廓檢測數(shù)字圖像可用各種邊緣檢測方法檢測出邊緣點,邊緣檢測雖然能夠檢測出邊緣點,僅僅獲得邊緣點是不夠的。另外,由于噪聲、光照不均勻等因素的影響,獲得的邊緣點是不連續(xù)的,檢測到的邊緣并不是一個整體,在某些情況下,必須通過邊緣跟蹤(edgetracking)將邊緣像素組合成有意義的邊緣信息,將邊緣連接起來形成一個整體,以便后續(xù)處理。邊緣跟蹤可以直接在原圖像上進(jìn)行,也可以在邊緣跟蹤之前,利用前面介紹的邊緣檢測算子得到梯度圖像,然后在梯度圖像上進(jìn)行邊緣跟蹤。邊緣跟蹤包含兩方面含義:①剔除噪聲點,保留真正的邊緣點;②填補邊緣空白點。7.3.1
局部處理方法邊緣連接最簡單的方法是分析圖像中每個邊緣像素點
的鄰域,如3×3或5×5鄰域內(nèi)像素的特點。將所有依據(jù)預(yù)定準(zhǔn)則被認(rèn)為是相似的點連接起來,形成由共同滿足這些準(zhǔn)則的像素組成的一條邊緣。在這種分析過程中,確定邊緣像素相似性的兩個主要性質(zhì)如下。(1)用于生成邊緣像素的梯度算子的響應(yīng)強度,有(7-51)則處于定義的
鄰域內(nèi)坐標(biāo)為
的邊緣像素,具有與
相似的幅度,這里E是一個非負(fù)閾值。7.3.1
局部處理方法(2)梯度矢量的方向由梯度矢量的方向角給出,如果 (7-52)則處于定義的
鄰域內(nèi)坐標(biāo)為
的邊緣像素,具有與
相似的角度,這里是非負(fù)闕值。如前所述,
處邊緣的方向垂直于此點處梯度矢量的方向。如果大小和方向準(zhǔn)則得到滿足,則在
鄰域中的點就與位于
的像素連接起來。在圖像中的每個位置重復(fù)這一操作。當(dāng)鄰域的中心從一個像素轉(zhuǎn)移到另一像素時,這兩個相連接點必須記錄下來。7.3.2
邊緣跟蹤方法邊緣跟蹤也稱輪廓跟蹤、邊界跟蹤,是由梯度圖像中的一個邊緣點出發(fā),依次搜索并連接相鄰邊緣點從而逐步檢測出邊緣的方法,其目的是區(qū)分目標(biāo)與背景。一般情況下,邊緣跟蹤算法具有較好的抗噪性,產(chǎn)生的邊緣具有較好的剛性。根據(jù)邊緣的特點,有的邊緣取正值(如階躍型邊緣的一階導(dǎo)數(shù)為正),有的取負(fù)值(如屋頂型邊緣的二階導(dǎo)數(shù)),有的邊緣取0值(階躍型邊緣二階導(dǎo)數(shù),屋頂型邊緣一階導(dǎo)數(shù)均過零點)。因此,可以將邊緣跟蹤算法分為極大跟蹤法、極小跟蹤法、極大—極小跟蹤法與過零點跟蹤法。7.3.2
邊緣跟蹤方法1.邊緣跟蹤過程(1)確定邊緣跟蹤的起始邊緣點。其中起始邊緣點可以是一個也可以是多個。(2)確定和采取一種合適的數(shù)據(jù)結(jié)構(gòu)和搜索策略,根據(jù)已經(jīng)發(fā)現(xiàn)的邊緣點確定下一個檢測目標(biāo)并對其進(jìn)行檢測。(3)確定搜索終結(jié)的準(zhǔn)則或終止條件(如封閉邊緣回到起點),并在滿足條件時停止進(jìn)程,結(jié)束搜索。7.3.2
邊緣跟蹤方法2.常用的邊緣跟蹤技術(shù)常用的邊緣跟蹤技術(shù)有兩種:探測法和梯度圖法。假設(shè)圖像為二值圖像且圖像邊緣明確,圖像中只有一個封閉邊緣的目標(biāo),那么探測法的基本步驟如下:(1)假設(shè)k為記錄圖像邊緣線像素點數(shù)的變量,其初始值為0。(2)自上而下、自左向右掃描圖像,發(fā)現(xiàn)某個像素p0從0變到1時,記錄其坐標(biāo)
。(3)從像素
開始按順時針方向,如圖7-18(a)所示,研究其8鄰域,將第一次出現(xiàn)的1-像素記為pk,并存儲其坐標(biāo)
,置
。7.3.2
邊緣跟蹤方法(4)如果8鄰域全為0-像素,則p0為孤立點,終止追蹤。(5)如果pk和p0是同一個點,即 , ,則表明p1,…,pn-1已形成一個閉環(huán),終止本條輪廓線追蹤。否則返回步驟(3)繼續(xù)跟蹤。(6)把搜索起點移到圖像的別處,繼續(xù)進(jìn)行下一輪廓搜索。應(yīng)注意新的搜索起點一定要在已得到的邊緣線所圍區(qū)域之外。邊緣跟蹤結(jié)果如圖7-18(b)所示。7.3.2
邊緣跟蹤方法需要注意以下三點:(1)在跟蹤過程中,要賦給已經(jīng)確定出的邊界點的已跟蹤過標(biāo)志。(2)若有多個區(qū)域,則再重復(fù)以上步驟,直到掃描點到達(dá)左下角點。(3)外側(cè)的邊界線按逆時針方向跟蹤,內(nèi)側(cè)的邊界線按順時針方向跟蹤。7.3.3OpenCV實現(xiàn)邊緣輪廓繪制輪廓檢測的目標(biāo)是確定閉合物體的形狀,特別是對于具有相同顏色強度的連續(xù)點,尋找輪廓的方法是確定的,而邊緣檢測是通過檢測顏色強度內(nèi)的變化來進(jìn)行的。邊緣檢測對整個圖像進(jìn)行操作,而輪廓檢測僅對圖像內(nèi)的對象進(jìn)行操作。1.查找并繪制輪廓函數(shù)一個輪廓對應(yīng)著一系列的點,這些點以某種方式表示圖像中的一條曲線。在OpenCV中,函數(shù)cv2.findContours()用于查找圖像的輪廓,并能夠根據(jù)參數(shù)返回特定表示方式的輪廓(曲線)。函數(shù)cv2.drawContours()能夠?qū)⒉檎业降妮喞L制到圖像上,該函數(shù)可以根據(jù)參數(shù)在圖像上繪制不同樣式(實心/空心點),以及線條的不同粗細(xì)、顏色等,可以繪制全部輪廓也可以僅繪制指定的輪廓。7.3.3OpenCV實現(xiàn)邊緣輪廓繪制2.查找圖像輪廓:findContours函數(shù)函數(shù)cv2.findContours()的語法格式為:Image,contours,hierarchy=cv2.findContours(image,mode,method)(1) 式中的返回值1) image:與函數(shù)參數(shù)中的原始圖像image一致;2) contours:返回輪廓信息,每個輪廓是由若干個點所構(gòu)成的。例如,contours[i]是第i個輪廓(下標(biāo)從0開始),contours[i][j]是第i個輪廓內(nèi)的第j個點。3) hierarchy:表示輪廓的層次信息。7.3.3OpenCV實現(xiàn)邊緣輪廓繪制(2)式中的參數(shù)為1) image:原始圖像。8位單通道圖像,所有非零值被處理為1,所有零值保持不變。也就是說灰度圖像會被自動處理為二值圖像。在實際操作時,可以根據(jù)需要,預(yù)先使用閾值處理等函數(shù)將待查找輪廓的圖像處理為二值圖像。2) mode:輪廓檢索模式,即輪廓提取方式,具體有4種:
cv2.RETR_EXTERNAL:只檢測外輪廓;
cv2.RETR_LIST:對檢測到的輪廓不建立等級關(guān)系;
cv2.RETR_CCOMP:檢索所有輪廓并將他們組織成兩級層次結(jié)構(gòu)。上面的一層為外邊界,下面的一層為內(nèi)孔的邊界。如果內(nèi)孔內(nèi)還有一個聯(lián)通物體,那么這個物體的邊界仍然位于頂層;
cv2.RETR_TREE:建立一個等級樹結(jié)構(gòu)的輪廓。7.3.3OpenCV實現(xiàn)邊緣輪廓繪制3) method:輪廓的近似方法,參數(shù)method決定了如何表達(dá)輪廓。在使用函數(shù)cv2.findContours()查找圖像輪廓時,需要注意以下問題: 待處理的源圖像必須是灰度二值圖。因此,在通常情況下,都要預(yù)先對圖像進(jìn)行閾值分割或者邊緣檢測處理,得到滿意的二值圖像后再將其作為參數(shù)使用; 在OpenCV中,函數(shù)cv2.findContours()是從黑色背景中查找白色對象。因此,對象必須是白色的,背景必須是黑色的; 在OpenCV4.x中,函數(shù)cv2.findContours()僅有兩個返回值。7.3.3OpenCV實現(xiàn)邊緣輪廓繪制3.繪制圖像輪廓:drawContours函數(shù)在OpenCV中,使用函數(shù)cv2.drawContours()繪制圖像輪廓,該函數(shù)的語法格式為:image=cv2.drawContours(image,contours,contourIdx,color[,thickness[,lineType[,hierarchy[,maxLevel[,offset]]]]]) image:表示待繪制輪廓的圖像;
contours:表示需要繪制的輪廓;
contourIdx:表示需要繪制的邊緣索引,如果該值為負(fù)數(shù)(通常為-1),表示繪制全部輪廓;
color:表示繪制的輪廓顏色,用BGR表示;
thickness:表示繪制輪廓的粗細(xì),如果該值設(shè)置為-1,則表示繪制實心輪廓7.3.3OpenCV實現(xiàn)邊緣輪廓繪制
lineType:表示繪制輪廓所選用的線型;
hierarchy:表示輪廓的層次信息;
maxLevel:控制所繪制輪廓層次的深度;
offset:表示輪廓的偏移程度。7.4Hough變換霍夫變換是一種在圖像中尋找直線、圓以及其他簡單形狀的方法,是圖像處理中的一種特征提取技術(shù),它采用類似于投票的方式來獲取當(dāng)前圖像內(nèi)的形狀集合,該變換由PaulHough(霍夫)于1962年首次提出。最初的霍夫變換只能用于檢測直線和曲線,起初的方法要求知道物體邊界線的解析方程,但不需要有關(guān)區(qū)域位置的先驗知識。1972年,經(jīng)典的霍夫變換由RichardDuda和PeterHart推廣使用,用來檢測圖像中的直線。經(jīng)過發(fā)展后,霍夫變換不僅能夠識別直線,還能識別其他簡單的圖形結(jié)構(gòu),常見的有圓、橢圓等。7.4Hough變換如果圖像分割過程中,預(yù)先已知目標(biāo)的形狀,如直線、曲線或圓等,則可以利用Hough(霍夫)變換進(jìn)行檢測,它的主要優(yōu)點在于受噪聲和曲線間斷的影響較小。在已知曲線形狀的條件下,Hough變換實際上是利用分散的邊緣點進(jìn)行曲線逼近,它也可看成一種聚類分析技術(shù)。圖像空間中的所有點均對參數(shù)空間中的參數(shù)集合進(jìn)行投票表決,獲得多數(shù)表決票的參數(shù)即為所求的特征參數(shù)。7.4.1Hough直線變換在直角坐標(biāo)系表示的圖像空間中,經(jīng)過(x,y)的所有直線均可描述為:(7-53)式中,a和b分別表示斜率和截距。式(7-51)經(jīng)適當(dāng)變形又可以寫為(7-54)該變換即為直角坐標(biāo)系中對(x,y)點的Hough變換,它表示參數(shù)空間的一條直線,如圖7-20所示。圖像空間中的點(x,y)對應(yīng)于參數(shù)空間中直線
,點
對應(yīng)于參數(shù)空間中直線
,這兩條直線的交點
即為圖像空間中過點
和
的直線的斜率和截距。事實上,圖像空間中這條直線上的所有點經(jīng)Hough變換后在參數(shù)空間中的直線都會交于點
。總之,圖像空間中共線的點對應(yīng)于參數(shù)空間相交的線。反之,參數(shù)空間相交于一點的所有直線在圖像空間里都有共線的點與之對應(yīng)。這就是Hough變換中的點線對偶關(guān)系。7.4.1Hough直線變換圖7-20直角坐標(biāo)系中的Hough變換如果直線的斜率無限大,即被檢測的直線為豎直線時,采用式(7-54)是無法完成檢測的。為了能夠準(zhǔn)確識別和檢測任意方向和任意位置的直線,通常使用直線極坐標(biāo)方程來代替式(7-53)。(7-55)7.4.1Hough直線變換在極坐標(biāo)系中,橫坐標(biāo)為直線的法向角,縱坐標(biāo)為直角坐標(biāo)原點到直線的法向距離。圖像空間中的點(x,y),經(jīng)Hough變換映射到參數(shù)空間
中一條正弦曲線,如圖7-21所示。圖像空間中共直線的n點,映射到參數(shù)空間是n條正弦曲線,且這些正弦曲線相交于點
。為了檢測出圖像空間中的直線,在參數(shù)空間建立一個二維累加數(shù)組
,第一維的范圍為[0,D],
為圖像中的點到原點的最大距離值;第二維的范圍為[-90°,90°]。開始時把數(shù)組初始化為零,然后由圖像空間中的邊緣點計算參數(shù)空間中參考點的可能軌跡,并對該軌跡經(jīng)過的所有
位置相對應(yīng)的數(shù)組元素
的加1。當(dāng)圖像空間中所有邊緣點都變換后,檢測累加數(shù)組,根據(jù)最大值所對應(yīng)的參數(shù)值
確定出直線方程的參數(shù)。Hough變換實質(zhì)上是一種投票機(jī)制,對參數(shù)空間中的離散點進(jìn)行投票,若投票值超過某一門限值,則認(rèn)為有足夠多的圖像點位于該參數(shù)所決定的直線上。這種方法受噪聲和直線出現(xiàn)間斷的影響較小。7.4.1Hough直線變換(a)一條直線對應(yīng)一個點
(b)一條直線上的多個點對應(yīng)多條交于一點的正弦曲線7.4.1Hough直線變換Hough變換直線檢測算法操作步驟如下。(1)根據(jù)精度要求,量化參數(shù)空間。由此建立二維累加數(shù)組
,并將其初始化為零。(2)自上而下、自左向右遍歷圖像,如果檢測到當(dāng)前點(x,y)是邊緣點,則根據(jù)式(8-50)計算出每一個對應(yīng)的r值。(3)根據(jù)和r的值,在相應(yīng)的數(shù)組元素上加1,即
。(4)重復(fù)執(zhí)行步驟(2)和(3),直到所有的邊緣點都處理完畢,(5)找到累加數(shù)組中最大元素值,其對應(yīng)的參數(shù)值為
,從而確定出圖像空間中直線的方程為7.4.1Hough直線變換Hough變換不需要預(yù)先組合或連接邊緣點。位于感興趣曲線上的邊緣點可能構(gòu)成圖像邊緣的一個小部分。特別指出,Hough變換可以允許位于曲線上的邊緣數(shù)量少于實際的邊緣數(shù)量,而大多數(shù)魯棒性回歸算法無法適用于這種情況。Hough變換所基于的假設(shè)是在大量噪聲出現(xiàn)的情況下,最好是在參數(shù)空間中去求滿足圖像邊緣最大數(shù)量的那個點。如果圖像中有幾條曲線和給定模型相匹配,則在參數(shù)空間中會出現(xiàn)幾個峰值。此時,可以探測每一個峰值,去掉對應(yīng)于某一個峰值的曲線邊緣,再檢測余下的曲線,直到?jīng)]有明顯的邊緣。但是,確定峰值的顯著性是件很困難的事。7.4.1Hough直線變換在進(jìn)行Hough變換之前,需要對原始圖像做必要的預(yù)處理,包括二值化和細(xì)線化操作,得到線幅寬度等于1像素的圖像邊緣,然后再利用Hough變換提取出圖像中的直線。需要說明的是,對和量化過粗,則計算出的直線參數(shù)就不精確;如果量化程度過細(xì),則計算量增加。因此,對和的量化要在滿足一定精度條件下進(jìn)行,也要兼顧計算量的問題。因此,程序中和的步長決定了計算量和計算精度。7.4.2Hough變換圓檢測圓形輪廓檢測在數(shù)字圖像的形態(tài)識別領(lǐng)域中有著很重要的地位,圓檢測即是確定圓的圓心坐標(biāo)與半徑。令
是圖像空間待檢測圓周上點的集合,若該圓周半徑為r、圓心為(a,b),則其在圖像空間中的方程為:(7-56)同樣,若(x,y)為圖像空間中的一點,它在參數(shù)空間(a,b,r)中的方程為:(7-57)顯然,該方程為三維錐面。對于圖像空間中任意一點均有參數(shù)空間的一個三維錐面與之相對應(yīng),如圖7-22所示;同一圓周上的n點,對應(yīng)于參數(shù)空間中相交于某一點
的n個錐面,這點恰好對應(yīng)于圖像空間中圓的圓心坐標(biāo)與半徑。7.4.2Hough變換圓檢測一般情況下,圓經(jīng)過Hough變換后的參數(shù)空間是三維的。所以在Hough變換圓檢測時需要在參數(shù)空間中建立一個三維累加數(shù)組
;對于圖像空間中的邊緣點,根據(jù)式(7-57)計算出該點在
三維網(wǎng)格上的對應(yīng)曲面,并在相應(yīng)累加數(shù)組單元上加1??梢娎肏ough變換檢測圓的原理和計算過程與檢測直線類似,只是復(fù)雜程度增大了。為了降低存儲資源,減少計算量,參數(shù)空間維數(shù)的降低是非常必須的。對于圖像空間中的圓,如圖7-23所示,為邊緣點
的梯度方向,并且一定是指向圓心的。利用一階偏導(dǎo)數(shù)可以計算出該梯度角為:(7-58)7.4.2Hough變換圓檢測圖7-22圓的參數(shù)空間示意圖圖7-23圖像空間中的圓由此,圓心坐標(biāo)的計算公式表示為:(7-59a)(7-59b)7.4.2Hough變換圓檢測對式(7-59a)整理后可以得到(7-60)將其代入式(7-59b)得(7-61)于是有(7-62)可見,當(dāng)?shù)玫竭吘壧荻冉堑恼兄岛?,即可通過式(7-62)得到圓在參數(shù)空間上的映射,實現(xiàn)了累加數(shù)組維數(shù)的降低,即由三維降到二維。7.4.2Hough變換圓檢測Hough變換圓檢測算法操作步驟如下。(1)根據(jù)精度要求,量化參數(shù)空間a和b,由此建立二維累加數(shù)組A(a,b),并將其初始化為零。(2)計算邊緣輪廓圖像的梯度角正切值。(3)自上而下、自左向右掃描圖像,如果檢測到當(dāng)前點(x,y)是邊緣點,查找當(dāng)前點所對應(yīng)的梯度角正切值,然后根據(jù)式(7-62)計算出每一個a對應(yīng)的b值。(4)根據(jù)a和b的值,執(zhí)行
。(5)循環(huán)執(zhí)行步驟(3)、(4),直到所有點全部處理完畢。(6)找到累加數(shù)組中最大元素值對應(yīng)坐標(biāo)位置,該結(jié)果即為式(7-62)描述的圓心坐標(biāo)。(7)將圓心坐標(biāo)代入圖像空間中圓的方程式(7-56),計算所有邊緣點至圓心坐標(biāo)的的距離,找到距離數(shù)據(jù)中出現(xiàn)頻率最高的值,即為圓的半徑參數(shù)。7.4.2Hough變換圓檢測Hough變換圓檢測示例如圖7-24所示。
(a)邊緣輪廓圖像
(b)圓檢測結(jié)果圖7-24Hough變換圓檢測示例7.4.3廣義Hough變換當(dāng)目標(biāo)的邊緣沒有解析表達(dá)式時,就不能使用一個確定的變換方程來實現(xiàn)Hough變換。利用邊緣點的梯度信息,可以將上述對解析曲線的Hough變換算法推廣至用于檢測任意形狀的輪廓,這就是廣義Hough變換。廣義Hough變換的思路是:對于一個任意形狀的目標(biāo),可以在曲線包圍的區(qū)域選取一參考點(a,b),通常將其選擇為圖形的中心點。設(shè)(x,y)為邊緣上一點,(x,y)到(a,b)的矢量為r,r與x軸的夾角為,(x,y)到(a,b)的距離為r,(x,y)處的梯度角為,如圖7-25所示。
圖7-25廣義Hough變換示意圖7.4.3廣義Hough變換將分成離散的m種可能狀態(tài)
,記
,其中為的離散間隔。顯然r和可以表示成梯度角的函數(shù),以為索引可以建立一個關(guān)于r和的關(guān)系查找表(參考表)。對于每一個梯度角為的邊緣點(x,y),可以根據(jù)下面的約束式預(yù)先計算出參考點的可能位置:(7-63)7.4.4OpenCV實現(xiàn)Hough變換霍夫變換主要包括霍夫直線變換和霍夫圓變換?;舴蛑本€變換用來在圖像內(nèi)尋找直線,霍夫圓變換用來在圖像內(nèi)尋找圓。在OpenCV中,前者可以用函數(shù)cv2.HoughLines()和函數(shù)cv2.HoughLinesP()實現(xiàn),后者可以用函數(shù)cv2.HoughCircles()。7.4.4OpenCV實現(xiàn)Hough變換1.霍夫直線檢測在OpenCV中提供了cv2.HoughLines()函數(shù)來實現(xiàn)標(biāo)準(zhǔn)霍夫直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科技學(xué)院《材料生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《快題專題訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東建設(shè)職業(yè)技術(shù)學(xué)院《日語翻譯實戰(zhàn)訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東環(huán)境保護(hù)工程職業(yè)學(xué)院《英語聲樂》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《展覽場館經(jīng)營與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東東軟學(xué)院《媒介經(jīng)營與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 《定量分析實驗》課件
- 西點軍校培訓(xùn)課件
- 小學(xué)生誠信的課件
- 廣東碧桂園職業(yè)學(xué)院《中國近現(xiàn)代政治制度》2023-2024學(xué)年第一學(xué)期期末試卷
- 教務(wù)處主任批評與自我批評
- 氟馬西尼完整
- 合同-勞動主體變更三方協(xié)議
- 2024年江蘇南京大數(shù)據(jù)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 挪用公款還款協(xié)議書范本
- 煤礦巷道噴涂技術(shù)方案
- 新版中國腦出血診治指南
- 醫(yī)療護(hù)理安全警示教育講解
- 園林綠地冬季防火措施(參考范本)
- 九小場所消防安全檢查表
- 充電樁選址優(yōu)化與布局規(guī)劃
評論
0/150
提交評論