




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器視覺原理與應(yīng)用第7章圖像的特征提取7.1點(diǎn)檢測 7.1.1Moravec角點(diǎn)檢測算子
7.1.2SUSAN角點(diǎn)檢測算子 7.1.3Harris角點(diǎn)檢測算子7.2邊緣檢測 7.2.1邊緣的模型、檢測算子及基本步驟 7.2.2基于梯度的邊緣檢測 7.2.3基于拉普拉斯算子的邊緣檢測 7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)7.3邊緣輪廓檢測 7.3.1局部處理方法
第7章圖像的特征提取 7.3.2邊緣跟蹤方法 7.3.3OpenCV實(shí)現(xiàn)邊緣輪廓繪制7.4Hough變換 7.4.1Hough直線變換 7.4.2Hough變換圓檢測 7.4.3廣義Hough變換 7.4.4OpenCV實(shí)現(xiàn)Hough變換
7.1
點(diǎn)檢測點(diǎn)特征是目前基于特征的配準(zhǔn)算法所用到的主要特征。與邊緣或區(qū)域特征相比,點(diǎn)特征指示的數(shù)據(jù)量明顯要少很多;點(diǎn)特征對(duì)于噪聲的敏感度也比另外兩種特征低;在灰度變化或遮掩等情況下,點(diǎn)特征也比邊緣和區(qū)域特征更為可靠。圖像中“點(diǎn)”特征的含義是,它的灰度幅值與其鄰域值有著明顯的差異。檢測這種點(diǎn)特征首先將圖像進(jìn)行低通濾波,然后把平滑后的每一個(gè)像素的灰度值與它相鄰的4個(gè)像素的灰度值比較,當(dāng)差值足夠大時(shí)可檢測出點(diǎn)特征來。點(diǎn)特征包括角點(diǎn)、切點(diǎn)和拐點(diǎn),它們是目標(biāo)形狀的重要特征。角點(diǎn)是目標(biāo)邊界上曲率超過一定閾值的局部極大值點(diǎn);切點(diǎn)是直線與圓弧的平滑過渡點(diǎn);拐點(diǎn)是凹圓弧與凸圓弧的平滑過渡點(diǎn)7.1.1
Moravec角點(diǎn)檢測算子Moravec算子是利用灰度方差提取特征點(diǎn),計(jì)算每個(gè)像素在水平(horizontal)、垂直(vertical)、對(duì)角線(diagonal)和反對(duì)角線(anti-diagonal)四個(gè)方向上的灰度方差,選擇四個(gè)值中最小值為該像素的角點(diǎn)響應(yīng)函數(shù),最后通過局部非極大值抑制檢測出角點(diǎn)。Moravec角點(diǎn)檢測算法操作步驟如下。(1)計(jì)算各像素四個(gè)方向上的灰度方差及該像素的角點(diǎn)響應(yīng)函數(shù)。的窗口以及窗口內(nèi)四個(gè)方向如圖7-1所示。在以像素為中心的圖像窗口中,利用式(7-1)計(jì)算其四個(gè)方向上像素灰度方差:7.1.1
Moravec角點(diǎn)檢測算子圖7-1Moravec算法圖像窗口其中,
。四個(gè)值中的最小值為該像素的角點(diǎn)響應(yīng)函數(shù):
(7-2)7.1.1
Moravec角點(diǎn)檢測算子(2)給定一經(jīng)驗(yàn)閾值,將響應(yīng)值大于該閾值的點(diǎn)作為候選角點(diǎn)。閾值的選擇應(yīng)以候選角點(diǎn)中包含足夠多的真實(shí)角點(diǎn)而又不含過多的偽角點(diǎn)為原則。(3)局部非極大值抑制。在一定大小的窗口內(nèi),將候選點(diǎn)中響應(yīng)值不是極大者全部去掉,僅留下一個(gè)響應(yīng)值最大者,則該像素即為一個(gè)角點(diǎn)。Moravec算子最顯著的優(yōu)點(diǎn)是算法簡單、運(yùn)算速度快。然而存在的問題有:①只利用了四個(gè)方向上的灰度變化實(shí)現(xiàn)局部相關(guān),因此響應(yīng)是各向異性的;②該算子的角點(diǎn)響應(yīng)函數(shù)未對(duì)噪聲進(jìn)行抑制,故對(duì)噪聲敏感;③選取最小值作為響應(yīng)函數(shù)進(jìn)行判定,所以對(duì)邊緣信息比較敏感。7.1.2SUSAN角點(diǎn)檢測算子SUSAN(smalluni-valuesegmentassimilatingnucleus)算子可用于圖像的角點(diǎn)特征檢測和邊緣檢測,但是角點(diǎn)檢測效果比邊緣檢測更好。此外,SUSAN算法無須進(jìn)行梯度計(jì)算,使得算法對(duì)局部噪聲不敏感,抗噪能力強(qiáng)。1. SUSAN角點(diǎn)檢測原理SUSAN算子是基于圖像的幾何觀測,像素分類為邊緣、角點(diǎn)和扁平區(qū),直接利用圖像的灰度特征進(jìn)行檢測。如圖7-2所示,SUSAN算法采用一個(gè)圓形模板,模板圓心作為核,圓形區(qū)城內(nèi)的每個(gè)像素的灰度值與中心像素的灰度值比較,灰度值與中心像素灰度值相近的像素組成的區(qū)域稱為USAN區(qū)域,即同化核分割相似值區(qū)域。7.1.2SUSAN角點(diǎn)檢測算子圖7-2SUSAN算子的USAN示意圖7.1.2SUSAN角點(diǎn)檢測算子圖7-2(b)顯示了不同位置的USAN區(qū)域面積大小。USAN區(qū)域包含了圖像結(jié)構(gòu)的以下信息:①在a位置,核心點(diǎn)在角點(diǎn)上,USAN區(qū)域面積達(dá)到最小:②在b位置,核心點(diǎn)在邊緣,USAN區(qū)域面積接近最大值的一半:③在c位置,核心點(diǎn)處于暗色區(qū)之內(nèi),有大于半數(shù)的點(diǎn)在USAN中,USAN區(qū)域面積接近最大值??梢钥闯?,USAN區(qū)域含有圖像某個(gè)局部區(qū)域的強(qiáng)度特征。SUSAN算法正是基于這一原理,通過判斷核心點(diǎn)子鄰域中的相似灰度像素的比率來確定角點(diǎn)。將模板中的各點(diǎn)與核心點(diǎn)(當(dāng)前點(diǎn))的灰度值用下面的相似比較函數(shù)來進(jìn)行比較:7.1.2SUSAN角點(diǎn)檢測算子(7-3)式(7-3)中,為核心點(diǎn)的位置,
為模板M
中其他像素的位置,
和
分別表示
和
處像素的灰度;t表示灰度差值閾值;函數(shù)c表示比較輸出結(jié)果,由模板中所有像素參與運(yùn)算得出。圖7-3所示模板為37像素模板,最小的模板為
模板。通常對(duì)式(7-3)采用以下更加穩(wěn)健的形式:(7-4)7.1.2SUSAN角點(diǎn)檢測算子USAN的大小(面積)可由下式計(jì)算出。(7-5)圖7-337像素圓形模板7.1.2SUSAN角點(diǎn)檢測算子該參數(shù)
決定了USAN區(qū)域各點(diǎn)之間最大的灰度差位。將
與一個(gè)幾何閾值g比較以做出判斷。一般情況下,如果模板能取到的最大S值為
,對(duì)于37像素模板,
,該閾值設(shè)為
以給出最優(yōu)的噪聲消除性能。如果提取邊緣,則閾值設(shè)為
。SUSAN算法的角點(diǎn)響應(yīng)函數(shù)可寫為(7-6)對(duì)其應(yīng)用局部非極大值抑制后可得到角點(diǎn)。7.1.2SUSAN角點(diǎn)檢測算子2. SUSAN角點(diǎn)檢測算法(1) 在圖像的核心點(diǎn)處放置一個(gè)37像素的圓形模板;(2) 用式(7-5)計(jì)算圓形模板中和核心點(diǎn)有相似灰度值的像素個(gè)數(shù);(3) 用式(7-6)產(chǎn)生角點(diǎn)響應(yīng)函數(shù),函數(shù)值大于某一特定閾值的點(diǎn)被認(rèn)為是角點(diǎn)。7.1.2SUSAN角點(diǎn)檢測算子3. SUSAN算子存在的問題SUSAN算子不需要計(jì)算圖像的導(dǎo)數(shù),抗噪聲能力強(qiáng),可以檢測所有類型的角點(diǎn)。但SUSAN算子仍然存在三個(gè)問題。(1) 相似比較函數(shù)計(jì)算復(fù)雜。(2) 圖像中不同區(qū)域處目標(biāo)與背景的對(duì)比程度不一樣,取固定閾值不符合實(shí)際情況(3) USAN的三種典型形狀為理想情況,即認(rèn)為與核心點(diǎn)處于同一區(qū)域物體或背景的像素與核心點(diǎn)具有相似灰度值,而另一區(qū)域則與它相差較大。實(shí)際中,由于圖像邊緣灰度的漸變性,與核值相似的像素并不一定與它屬于同一物體或背景,而離核心點(diǎn)較遠(yuǎn),與它屬于同一物體或背景的像素灰度值卻可能與核值相差較遠(yuǎn)。7.1.3Harris角點(diǎn)檢測算子Harris角點(diǎn)檢測算子又稱為Plessey算法,是由Moravec算子改進(jìn)而來的。Harris算子引入了信號(hào)處理中自相關(guān)函數(shù)理論,將角點(diǎn)檢測與圖像的局部自相關(guān)函數(shù)緊密結(jié)合,通過特征值分析來判斷是否為角點(diǎn)。Moravec算子由于只考慮了四個(gè)方向上的灰度變化,所以是各向異性的。而Harris定義了任意方向上的自相關(guān)值,使之能夠表現(xiàn)各個(gè)方向上的變化特性,且通過高斯窗加權(quán),起到了抗噪作用,它的區(qū)域灰度變化計(jì)算式為:(7-7)其中,
表示圖像中
處的灰度值;
為高斯濾波器,
7.1.3Harris角點(diǎn)檢測算子當(dāng)圖像的局部平移量
很小時(shí),局部平移圖像可以用一階泰勒級(jí)數(shù)來近似:(7-8)式中,和分別表示圖像在x和y方向上的導(dǎo)數(shù)。將式(7-8)代入式(7-7)中可得(7-9)式中,M是
的對(duì)稱矩陣。
(7-10)7.1.3Harris角點(diǎn)檢測算子
M反映了圖像坐標(biāo)
局部鄰域的圖像灰度結(jié)構(gòu)。假設(shè)矩陣M的特征值分別為和,這兩個(gè)特征值反映了局部圖像的兩個(gè)主軸的長度,而與主軸的方向無關(guān),因此形成一個(gè)旋轉(zhuǎn)不變描述。這兩個(gè)特征值可能出現(xiàn)三種情況:(1)如果和的值都很小,這時(shí)的局部自相關(guān)函數(shù)是平滑的(例如,任何方向上M的變化都很小),局部圖像窗口內(nèi)的圖像灰度近似為常數(shù)。(2)如果一個(gè)特征值較大而另一個(gè)較小,此時(shí)局部自相關(guān)是像山脊一樣的形狀。局部圖像沿山脊方向平移引起的M變化很小,而在其正交方向上平移引起的M較大,這表明該位置位于圖像的邊緣。(3)如果兩個(gè)特征值都較大,這時(shí)局部自相關(guān)函數(shù)是尖銳的峰值。局部圖像沿任何方向的平移都將引起M較大的變化,表明該點(diǎn)為特征點(diǎn)。7.1.3Harris角點(diǎn)檢測算子為了避免求矩陣M特征值,可以采用
和
來間接代替和。根據(jù)式(7-10),有(7-11)角點(diǎn)響應(yīng)函數(shù)可以寫成(7-12)其中,k是常數(shù)因子,一般取為
。只有當(dāng)圖像中像素的R值大于一定的閾值,且在周圍的八個(gè)方向上是局部極大值時(shí)才認(rèn)為該點(diǎn)是角點(diǎn)。圖像中角點(diǎn)的位置最后通過尋找角點(diǎn)的響應(yīng)函數(shù)的局部極值來獲取。7.2邊緣檢測邊緣檢測算子(edgedetectors)是一組用于在亮度函數(shù)中定位變化的非常重要的局部圖像預(yù)處理方法,邊緣是亮度函數(shù)發(fā)生急劇變化的位置。神經(jīng)學(xué)和心理學(xué)的研究表明,圖像中突變的位置對(duì)圖像感知很重要。在某種程度上,邊緣不隨光照和視角的變化而變化。如果只考慮那些強(qiáng)度大的邊緣元素,這樣就大幅減少了圖像的數(shù)據(jù)量。而在很多情形下,這種數(shù)據(jù)減少并不會(huì)損害對(duì)圖像內(nèi)容的理解圖像邊緣是圖像的最基本特征,主要存在于目標(biāo)與目標(biāo)、目標(biāo)與背景、區(qū)域與區(qū)域(包括不同色彩)之間。它常常意味者一個(gè)區(qū)域終結(jié)和另一個(gè)區(qū)域的開始。從本質(zhì)上講,圖像邊緣是以圖像局部特征不連續(xù)的形式出現(xiàn)的,是圖像局部特征突變的一種表現(xiàn)形式,例如,灰度的突變、顏色的突變、紋理結(jié)構(gòu)的突變等。邊緣檢測(edgedetection)實(shí)際上就是找出圖像特征發(fā)生變化的位置。7.2.1邊緣的模型、檢測算子及基本步驟灰度的空間變化模式隨著引起其變化的原因的不同而有所不同。因此,在幾乎所有的邊緣檢測算法中,都把幾種典型的灰度的空間變化模式假定為邊緣的模型,并對(duì)對(duì)應(yīng)于那些模型的灰度變化進(jìn)行檢測。首先,在標(biāo)準(zhǔn)的邊緣模型中,采用局部的單一直線邊緣作為邊緣的空間特征,因而可根據(jù)與直線正交的方向上的灰度變化模式對(duì)邊緣的類型進(jìn)行分類。如圖7-4所示為幾種常見的邊緣模型。第1行為二維圖像顯示,第2行為灰度斷面(垂直于邊緣方向)顯示。圖7-4(a)所示的階躍邊緣是理想的邊緣,圖7-4(b)所示的斜坡邊緣表示它已模糊時(shí)的邊緣,幾乎所有的邊緣檢測算法均考慮這兩種邊緣模型。圖7-4(c)所示的山型的尖峰狀灰度變化,是對(duì)寬度較窄的線經(jīng)模型化后得到的邊緣,不過,若線寬變粗的話,則山會(huì)呈現(xiàn)出兩條平行的階躍邊緣的7.2.1邊緣的模型、檢測算子及基本步驟組合形狀。這意味著邊緣模型隨著作為處理對(duì)象的圖像的分辨率或邊緣檢測算法中參與運(yùn)算的鄰域的大小而變化。圖7-4(d)所示的屋項(xiàng)邊緣,可認(rèn)為是圖7-4(c)中邊緣已模糊時(shí)的邊緣。圖7-4邊緣的模型對(duì)于圖7-4(a)中的理想階躍邊緣,圖像邊緣是清晰的。由于圖像采集過程中光學(xué)系統(tǒng)成像、數(shù)字采樣、光照條件等不完善因素的影響,實(shí)際圖像邊緣是模糊的,因而階躍邊緣變成斜坡邊緣,斜坡部分與邊緣的模糊程度成比例。7.2.1邊緣的模型、檢測算子及基本步驟圖像的邊緣可以用灰度變化的一階或二階導(dǎo)數(shù)來表示。檢測階躍邊緣實(shí)際上就是要找出使灰度變化的一階導(dǎo)數(shù)取到極大值和二階導(dǎo)數(shù)具有零交叉的像素。典型的邊緣檢測算法包含以下四個(gè)步驟。(1)濾波:邊緣檢測算法主要是基于圖像強(qiáng)度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計(jì)算對(duì)噪聲很敏感,因此必須通過濾波來改善與噪聲有關(guān)的邊緣檢測算法的性能。需要指出,大多數(shù)濾波器在降低噪聲的同時(shí)也導(dǎo)致邊緣強(qiáng)度的損失。因此,增強(qiáng)邊緣和降低噪聲之間需要折中。(2)增強(qiáng):增強(qiáng)邊緣的基礎(chǔ)是確定圖像各點(diǎn)鄰域灰度的變化值。增強(qiáng)算法可以將鄰域(或局部)灰度值有顯著變化的凸顯出來,而檢測圖像灰度變化的最基本的方法,是求圖像函數(shù)
的微分。函數(shù)的微分中,有偏微分、高階微分等各種微分形式,但在邊緣檢測中最常用的微分是梯度(gradient)
和拉普拉斯算子(Laplacian)
。7.2.1邊緣的模型、檢測算子及基本步驟(3)檢測:在圖像中有許多點(diǎn)的梯度幅值比較大,而這些點(diǎn)在特定的應(yīng)用領(lǐng)域中并不都是邊緣,所以應(yīng)該用某種方法來確定哪些點(diǎn)是邊緣點(diǎn)。最簡單的邊緣檢測判據(jù)是梯度幅值閾值判據(jù)。也就是說,通過使用差分、梯度、拉普拉斯算子及各種高通濾波進(jìn)行邊緣增強(qiáng)后,只要再進(jìn)行一次閾值化處理,便可以實(shí)現(xiàn)邊緣檢測。(4)定位:如果某一應(yīng)用場合要求確定邊緣位置,則邊緣的位置可在亞像素分辨率上來估計(jì),邊緣的方位也可以被估計(jì)出來。在邊緣檢測算法中,前三個(gè)步驟用得十分普遍。這是因?yàn)榇蠖鄶?shù)場合下,僅僅需要邊緣檢測算法指出邊緣出現(xiàn)在圖像某一像素的附近,而沒有必要指出邊緣的精確位置或方向。最近的二十年里發(fā)展了許多邊緣檢測算法,本章僅介紹常用的幾種。一階檢測算子相當(dāng)于一階微分法,二階邊緣檢測算子相當(dāng)于高一階微分處理。7.2.2基于梯度的邊緣檢測基于梯度的邊緣檢測是灰度變化的一階微分導(dǎo)數(shù),邊緣是圖像中灰度發(fā)生急劇變化的地方,基于梯度的邊緣檢測算法以此為理論依據(jù),它也是最原始、最基本的邊緣檢測方法。圖像的梯度描述灰度變化速率。因此,通過梯度可以增強(qiáng)圖像中的灰度變化區(qū)域,進(jìn)一步判斷增強(qiáng)的區(qū)域邊緣。邊緣是賦給單個(gè)像素的性質(zhì),用圖像函數(shù)在該像素一個(gè)鄰域處的特性來計(jì)算。它是一個(gè)具有幅值(強(qiáng)度)(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典型的邊緣剖面對(duì)于二維圖像函數(shù)
,在其坐標(biāo)上的梯度可以定義為一個(gè)二維列向量,即(7-13)梯度矢量的大小用梯度幅值來表示:(7-14)7.2.2基于梯度的邊緣檢測梯度幅值是指在
位置處灰度的最大變化率。一般來講,也將
稱為梯度梯度矢量的方向角,是指在
位置處灰度最大變化率方向,表示為(7-15)其中,是從x軸到點(diǎn)
的角度。梯度幅值計(jì)算式(7-14)對(duì)應(yīng)歐氏距離,為了減少計(jì)算量,梯度幅值也可按照城區(qū)距離和棋盤距離來計(jì)算,分別表示為(7-16)(7-17)7.2.2基于梯度的邊緣檢測對(duì)數(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ù)的不重要的變化。差分的對(duì)稱表達(dá)式為(7-19)這種形式并不常用,因?yàn)槭剑?-19)忽略了當(dāng)前像素(x,y)本身的影響。7.2.2基于梯度的邊緣檢測圖7-7所示模板表示圖像中
像素區(qū)城。例如,若中心像素
表示
,那么表示
,
的表示
,以此類推。那么根據(jù)上述模板,最簡單的一階偏導(dǎo)數(shù)的計(jì)算公式可以表示為(7-20)式(7-20)中像素間的關(guān)系如圖7-8(a)所示。這種梯度計(jì)算方法也稱為直接差分,直接差分的卷積模板如圖7-8(b)所示。
圖7-7計(jì)算模板7.2.2基于梯度的邊緣檢測圖7-8直接差分法7.2.2基于梯度的邊緣檢測1. Roberts算子Roberts算子是最老的算子之一,是一種斜向偏差分的梯度計(jì)算方法,梯度的大小代表邊緣的強(qiáng)度,梯度的方向與邊緣方向?垂直。由于它只使用當(dāng)前像素的2×2領(lǐng)域,計(jì)算非常簡單。如圖7-9所示,圖像中導(dǎo)數(shù)計(jì)算可以采用交叉差分操作,即(7-21)上式即為Roberts交叉梯度算子,如圖7-9(a)所示,也可采用圖7-9(b)所示的卷積模板實(shí)現(xiàn)上述操作。如果按照歐氏距離和城區(qū)距離計(jì)算梯度幅值,則式(7-14)和(7-16)可進(jìn)一步分別寫成(7-22)7.2.2基于梯度的邊緣檢測(7-23)
圖7-9Roberts算子式(7-23)與圖7-9(b)所示的卷積模板相對(duì)應(yīng)。采用Roberts算子計(jì)算圖像梯度時(shí),無法計(jì)算出圖像的最后一行(列)像素的梯度,這時(shí)一般采用前一行(列)的梯度值近似代替。7.2.2基于梯度的邊緣檢測2. Sobel算子Sobel算子把重點(diǎn)放在接近模板中心的像素點(diǎn),采用
模板可以避免在像素之間內(nèi)插點(diǎn)上計(jì)算梯度,對(duì)于中心像素
,使用以下公式來計(jì)算其偏導(dǎo)數(shù):(7-24)該公式所述即為Sobel算子,其導(dǎo)數(shù)計(jì)算也可以采用圖7-10所示的卷積模板。Sobel算子的特點(diǎn)是對(duì)稱的一階差分,對(duì)中心加權(quán)具有一定的平滑作用常數(shù)c通常取2。7.2.2基于梯度的邊緣檢測圖7-10Sobel算子7.2.2基于梯度的邊緣檢測3. Prewitt算子Prewitt算子與Sobel算子類似,只是Prewitt算子沒有把重點(diǎn)放在接近模板中心的像素。中心像素
的偏導(dǎo)數(shù)計(jì)算式為(7-25)Prewitt算子導(dǎo)數(shù)計(jì)算也可以采用圖7-11所示的卷積模板。Prewitt算子的特點(diǎn)是對(duì)稱的一階差分,對(duì)中心加權(quán)具有一定的平滑作用常數(shù)c通常取1。上述梯度法對(duì)和各用一個(gè)模板,需要兩個(gè)模板組合起來構(gòu)成一個(gè)梯度算子。常用的三種梯度算子(Roberts算子、Sobel算子和Prewitt算子)的導(dǎo)數(shù)計(jì)算模板分別7.2.2基于梯度的邊緣檢測如圖7-9(b)、圖7-10(b)和圖7-11(b)所示。各模板的系數(shù)和均等于零,表明在灰度均勻區(qū)域的響應(yīng)為零。
圖7-11Prewitt算子7.2.2基于梯度的邊緣檢測4. Kirsch算子Kirsch算子是一種方向算子,利用一組模板對(duì)圖像中的同一像素進(jìn)行卷積運(yùn)算,然后選取其中最大值作為邊緣強(qiáng)度,而將與之對(duì)應(yīng)的方向作為邊緣方向。相對(duì)于梯度算子的優(yōu)點(diǎn)是,Kirsch算子不只考慮水平和垂直方向,還可以檢測其他方向上的邊緣,但計(jì)算量大大增加。常用的8方向Kirsch(
)模板如圖7-12所示,方向間的夾角為
。圖像中每個(gè)像素都有8個(gè)模板對(duì)某個(gè)特定方向邊緣做出最大響應(yīng),最大響應(yīng)模板的序號(hào)構(gòu)成了對(duì)邊緣方向的編碼。7.2.2基于梯度的邊緣檢測圖7-12八方向kirsch算子模板Kirsch算子檢測過程描述為:把表示不同方向邊緣的8個(gè)模板分別當(dāng)作加權(quán)矩陣與圖像進(jìn)行卷積運(yùn)算,選擇輸出最大值的模板,把該模板表示的邊緣方向和卷積運(yùn)算結(jié)果作為邊緣上的灰度變換值來輸出。7.2.2基于梯度的邊緣檢測梯度幅值閾值化處理:利用上述算子計(jì)算出圖像的梯度幅值便完成了邊緣增強(qiáng),然后采用梯度幅值閾值判據(jù)進(jìn)一步實(shí)現(xiàn)邊緣檢測,以二值圖像的輸出方式作為邊緣檢測結(jié)果,(7-26)式中,
表示輸出邊緣檢測結(jié)果;t表示梯度幅值閾值;LG和LB表示兩個(gè)不同的灰度峰值,如1和0。梯度算子在圖像邊緣附近產(chǎn)生較寬的響應(yīng),通常需要對(duì)邊緣進(jìn)行細(xì)線化操作,這在一定程度上影響了邊緣定位的精度。7.2.3基于拉普拉斯算子的邊緣檢測基于梯度的邊緣檢測是灰度變化的二階微分導(dǎo)數(shù),一階導(dǎo)數(shù)的局部最大值對(duì)應(yīng)二階導(dǎo)數(shù)的零交叉點(diǎn),這意味著可以通過尋找圖像函數(shù)的二階導(dǎo)數(shù)的零交叉點(diǎn)來找到邊緣點(diǎn),由此產(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ù)算子,它是一個(gè)標(biāo)量,具有各向同性(isotropic)的性質(zhì),其定義為(7-29)將式(7-28)代入式(7-29)得(7-30)7.2.3基于拉普拉斯算子的邊緣檢測顯然,式(7-30)可用圖7-13(a)所示的模板與像素
對(duì)應(yīng)鄰域內(nèi)的像素進(jìn)行卷積操作得到,模板的中心對(duì)應(yīng)圖像中的像素
。圖7-13還給出了拉普拉斯算子另外兩種常用的模板。
圖7-13常用的三種拉普拉斯算子模板7.2.3基于拉普拉斯算子的邊緣檢測2.LoG算子拉普拉斯算子一般不直接用于邊緣檢測,因?yàn)槿魏伟卸A導(dǎo)數(shù)的算子比只包含有一階導(dǎo)數(shù)的算子更易受噪聲的影響,對(duì)圖像計(jì)算后會(huì)增強(qiáng)噪聲。甚至一階導(dǎo)數(shù)很小的局部峰值也可以導(dǎo)致二階導(dǎo)數(shù)過零點(diǎn)。為了避免噪聲的影響,拉普拉斯算子常與平滑濾波器組合使用。常用的平滑函數(shù)為高斯函數(shù),高斯平滑濾波器對(duì)于消除正態(tài)分布噪聲是很有效的。二階高斯函數(shù)及其一、二階導(dǎo)數(shù)和拉普拉斯算子如下所示:(7-31)(7-32)7.2.3基于拉普拉斯算子的邊緣檢測(7-33)
(7-34)其中,為高斯分布的標(biāo)準(zhǔn)差,它決定了高斯濾波器的寬度。用高斯函數(shù)對(duì)圖像進(jìn)行平滑濾波,結(jié)果為:(7-35)其中,“*”表示卷積符號(hào)。圖像平滑后再應(yīng)用拉普拉斯算子,結(jié)果為(7-36)7.2.3基于拉普拉斯算子的邊緣檢測由于線性系統(tǒng)中卷積與微分的次序是可以交換的,因而:(7-37)式中,
稱為高斯—拉普拉斯(LaplacianofGaussian)算子,簡稱LoG算子,因此,LoG算子可以表示為:(7-38)在引入一個(gè)規(guī)范化的系數(shù)c后,得到LoG算子為:(7-39)7.2.3基于拉普拉斯算子的邊緣檢測其中c將掩膜元素的和規(guī)范為0。反過來的LoG算子由于其形狀常被稱為墨西哥草帽(Mexicanhat)。離散LoG算子?2G的5×5的例子如下:
該算子也被稱為墨西哥草帽(Mexicanhat)算子。因此采用LoG算子卷積圖像,相當(dāng)于使用高斯函數(shù)平滑圖像,然后對(duì)平滑結(jié)果采用拉普拉斯算子檢測圖像邊緣。這種邊緣檢測算法也稱為Marr邊緣檢測算法。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)JohnCanny于1986年提出Canny算子,它與LoG算子類似,也屬于先平滑后求導(dǎo)數(shù)的方法。Canny提出的新的邊緣檢測方法,它對(duì)受白噪聲影響的階躍型邊緣是最優(yōu)的。Canny創(chuàng)立了邊緣檢測計(jì)算理論(Computationaltheoryofedgedetection),并給出詳細(xì)的描述過程。Canny算子的最優(yōu)性與以下三個(gè)標(biāo)準(zhǔn)有關(guān):(1)檢測標(biāo)準(zhǔn):實(shí)現(xiàn)減少噪聲響應(yīng)。不丟失重要的邊緣,不應(yīng)有虛假的邊緣,它可以通過最優(yōu)平滑處理來實(shí)現(xiàn)。Canny最早表明:高斯濾波對(duì)邊緣檢測是最優(yōu)的。(2)定位標(biāo)準(zhǔn):正確性。在正確位置檢測到邊緣,實(shí)際邊緣與檢測到的邊緣位置之間的偏差最小。它可以通過非極大值抑制(non-maximumSuppression,相當(dāng)于峰值檢測)處理來實(shí)現(xiàn)。非極大值抑制返回的只是邊緣數(shù)據(jù)頂脊處的那些點(diǎn),而抑制其他所有點(diǎn),這樣做的結(jié)果是細(xì)化處理,非極大值抑制的輸出是正確位置上邊緣點(diǎn)連成的細(xì)線。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)梯度方向總是于邊緣方向垂直,通常就近取值為水平(左、右)、垂直(上、下)、對(duì)角線(右上、左上、左下、右下)等8個(gè)不同的方向。圖7-14非極大值抑制示例如圖7-14中,A、B、C三點(diǎn)具有相同的梯度方向(梯度方向垂直于邊緣方向)。經(jīng)過比較,A點(diǎn)具有最大的局部值,所以保留A點(diǎn)(稱為邊緣),其余兩點(diǎn)(B、C)被抑制(歸零)。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)(3)單響應(yīng)標(biāo)準(zhǔn):將多個(gè)響應(yīng)降低為單個(gè)邊緣響應(yīng)。這一點(diǎn)被第一個(gè)標(biāo)準(zhǔn)部分地覆蓋了,因?yàn)楫?dāng)有兩個(gè)響應(yīng)對(duì)應(yīng)于單個(gè)邊緣時(shí),其中之一應(yīng)該被認(rèn)為是虛假的。第三個(gè)標(biāo)準(zhǔn)解決受噪聲影響的邊緣問題,起抵制非平滑邊緣檢測子的作用。前面介紹的邊緣檢測算子均是基于微分方法,其依據(jù)是圖像的邊緣對(duì)應(yīng)一階導(dǎo)數(shù)的極大值點(diǎn)和二階導(dǎo)數(shù)零交叉點(diǎn),這種依據(jù)只有在圖像不含噪聲的情況下才成立。假設(shè)實(shí)際圖像信號(hào)用以下公式表示:(7-40)式中,
為理想無噪聲圖像信號(hào);
表示加性噪聲信號(hào)。應(yīng)用微分算子可以計(jì)算的是
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。雖然噪聲幅值往往很小,但我們不能認(rèn)為
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)會(huì)接近
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)因?yàn)樵肼曨l率往往很高,導(dǎo)致
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)嚴(yán)重偏離
的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。例如,假設(shè)噪聲為高頻正弦信號(hào),(7-41)那么它的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)分別為(7-42)(7-43)即使a很小,當(dāng)噪聲
的頻率很高時(shí),的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)的幅值也會(huì)變得非常大。實(shí)際中,噪聲不一定是加性的。一般而言,理想圖像信號(hào)與實(shí)際圖像信號(hào)可表示為下面的關(guān)系式:(7-44)7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(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)。總之,就是希望在提高對(duì)圖像邊緣的敏感性的同時(shí),能夠有效抑制噪聲的算法才是好的邊緣檢測算法。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)在圖像邊緣檢測中,抑制噪聲和邊緣精確定位是無法同時(shí)得到滿足的,也就是說,邊緣檢測算法通過圖像平滑算子濾除噪聲,但卻增加了邊緣定位的不確定性;反過來,若提高邊緣檢測算子對(duì)邊緣的敏感性,同時(shí)也提高了對(duì)噪聲的敏感性。有一種線性算子可以在抗噪聲干擾和精確定位之間提供最佳折中方案,它就是高斯函數(shù)的一階導(dǎo)數(shù),對(duì)應(yīng)于圖像的高斯函數(shù)平滑與梯度計(jì)算。Canny算子邊緣檢測算法操作步驟如下:(1)去噪,用尺度為的高斯濾波器去除圖像噪聲。將圖像
與高斯函數(shù)
進(jìn)行卷積運(yùn)算,得到經(jīng)平滑濾波后的圖像(7-46)7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)(2)計(jì)算梯度的幅度與方向,使用一階有限差分近似偏導(dǎo)數(shù),計(jì)算圖像梯度的幅值和方向,計(jì)算梯度可以利用Robert、Prewitt、Sobel等算子。使用一階有限差分計(jì)算的兩個(gè)偏導(dǎo)數(shù)陣列
與
:(7-47)(7-48)梯度幅值和方向角分別為:(7-49)(7-50)7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)(3)非極大值抑制。利用(2)步梯度方向劃分,進(jìn)行梯度幅值的非極大值抑制,獲取單像素邊緣點(diǎn)。為了定位邊緣的位置,必須保留局部梯度最大的點(diǎn),而抑制非極大值。在與邊緣垂直的方向上尋找局部最大值的過程被稱為非極大值抑制(non-maximumsuppression,簡稱NMS)。將梯度角
離散為圓周的四個(gè)扇區(qū)之一,如圖7-15所示。四個(gè)扇區(qū)的的標(biāo)號(hào)為0~3,對(duì)應(yīng)
鄰域內(nèi)元素的四種可能組合,任何通過鄰域中心的點(diǎn)必通過其中一個(gè)扇區(qū)。在每一點(diǎn)上,鄰域中心像素小于沿梯度方向的兩個(gè)相鄰像素梯度幅值,則令
。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)圖7-15四個(gè)扇區(qū)(0~3)及其相應(yīng)的比較方向(4)雙閾值處理。對(duì)邊緣圖像作滯后閾值處理,消除虛假響應(yīng),將低于閾值的所有值賦零值。閾值化后得到的邊緣圖像仍然有假邊緣存在,閾值選取得太低,會(huì)使得邊緣對(duì)比度減弱,產(chǎn)生假邊緣;閾值選取得太高將導(dǎo)致部分輪廓丟失。雙閾值算法可以解決閾值選取問題。7.2.4Canny算子邊緣檢測及OpenCV實(shí)現(xiàn)雙閾值算法是對(duì)非極大值抑制圖像
取兩個(gè)閾值t1和t2,且
,從而可以得到兩個(gè)閾值邊緣圖像
和
。由于
使用高閾值得到,因此含有很少的假邊緣,但同時(shí)也損失了有用的邊緣信息。而
的閾值較低,保留了較多的信息。于是可以以
為基礎(chǔ),以
為補(bǔ)充來連接圖像的邊緣。7.3邊緣輪廓檢測數(shù)字圖像可用各種邊緣檢測方法檢測出邊緣點(diǎn),邊緣檢測雖然能夠檢測出邊緣點(diǎn),僅僅獲得邊緣點(diǎn)是不夠的。另外,由于噪聲、光照不均勻等因素的影響,獲得的邊緣點(diǎn)是不連續(xù)的,檢測到的邊緣并不是一個(gè)整體,在某些情況下,必須通過邊緣跟蹤(edgetracking)將邊緣像素組合成有意義的邊緣信息,將邊緣連接起來形成一個(gè)整體,以便后續(xù)處理。邊緣跟蹤可以直接在原圖像上進(jìn)行,也可以在邊緣跟蹤之前,利用前面介紹的邊緣檢測算子得到梯度圖像,然后在梯度圖像上進(jìn)行邊緣跟蹤。邊緣跟蹤包含兩方面含義:①剔除噪聲點(diǎn),保留真正的邊緣點(diǎn);②填補(bǔ)邊緣空白點(diǎn)。7.3.1
局部處理方法邊緣連接最簡單的方法是分析圖像中每個(gè)邊緣像素點(diǎn)
的鄰域,如3×3或5×5鄰域內(nèi)像素的特點(diǎn)。將所有依據(jù)預(yù)定準(zhǔn)則被認(rèn)為是相似的點(diǎn)連接起來,形成由共同滿足這些準(zhǔn)則的像素組成的一條邊緣。在這種分析過程中,確定邊緣像素相似性的兩個(gè)主要性質(zhì)如下。(1)用于生成邊緣像素的梯度算子的響應(yīng)強(qiáng)度,有(7-51)則處于定義的
鄰域內(nèi)坐標(biāo)為
的邊緣像素,具有與
相似的幅度,這里E是一個(gè)非負(fù)閾值。7.3.1
局部處理方法(2)梯度矢量的方向由梯度矢量的方向角給出,如果 (7-52)則處于定義的
鄰域內(nèi)坐標(biāo)為
的邊緣像素,具有與
相似的角度,這里是非負(fù)闕值。如前所述,
處邊緣的方向垂直于此點(diǎn)處梯度矢量的方向。如果大小和方向準(zhǔn)則得到滿足,則在
鄰域中的點(diǎn)就與位于
的像素連接起來。在圖像中的每個(gè)位置重復(fù)這一操作。當(dāng)鄰域的中心從一個(gè)像素轉(zhuǎn)移到另一像素時(shí),這兩個(gè)相連接點(diǎn)必須記錄下來。7.3.2
邊緣跟蹤方法邊緣跟蹤也稱輪廓跟蹤、邊界跟蹤,是由梯度圖像中的一個(gè)邊緣點(diǎn)出發(fā),依次搜索并連接相鄰邊緣點(diǎn)從而逐步檢測出邊緣的方法,其目的是區(qū)分目標(biāo)與背景。一般情況下,邊緣跟蹤算法具有較好的抗噪性,產(chǎn)生的邊緣具有較好的剛性。根據(jù)邊緣的特點(diǎn),有的邊緣取正值(如階躍型邊緣的一階導(dǎo)數(shù)為正),有的取負(fù)值(如屋頂型邊緣的二階導(dǎo)數(shù)),有的邊緣取0值(階躍型邊緣二階導(dǎo)數(shù),屋頂型邊緣一階導(dǎo)數(shù)均過零點(diǎn))。因此,可以將邊緣跟蹤算法分為極大跟蹤法、極小跟蹤法、極大—極小跟蹤法與過零點(diǎn)跟蹤法。7.3.2
邊緣跟蹤方法1.邊緣跟蹤過程(1)確定邊緣跟蹤的起始邊緣點(diǎn)。其中起始邊緣點(diǎn)可以是一個(gè)也可以是多個(gè)。(2)確定和采取一種合適的數(shù)據(jù)結(jié)構(gòu)和搜索策略,根據(jù)已經(jīng)發(fā)現(xiàn)的邊緣點(diǎn)確定下一個(gè)檢測目標(biāo)并對(duì)其進(jìn)行檢測。(3)確定搜索終結(jié)的準(zhǔn)則或終止條件(如封閉邊緣回到起點(diǎn)),并在滿足條件時(shí)停止進(jìn)程,結(jié)束搜索。7.3.2
邊緣跟蹤方法2.常用的邊緣跟蹤技術(shù)常用的邊緣跟蹤技術(shù)有兩種:探測法和梯度圖法。假設(shè)圖像為二值圖像且圖像邊緣明確,圖像中只有一個(gè)封閉邊緣的目標(biāo),那么探測法的基本步驟如下:(1)假設(shè)k為記錄圖像邊緣線像素點(diǎn)數(shù)的變量,其初始值為0。(2)自上而下、自左向右掃描圖像,發(fā)現(xiàn)某個(gè)像素p0從0變到1時(shí),記錄其坐標(biāo)
。(3)從像素
開始按順時(shí)針方向,如圖7-18(a)所示,研究其8鄰域,將第一次出現(xiàn)的1-像素記為pk,并存儲(chǔ)其坐標(biāo)
,置
。7.3.2
邊緣跟蹤方法(4)如果8鄰域全為0-像素,則p0為孤立點(diǎn),終止追蹤。(5)如果pk和p0是同一個(gè)點(diǎn),即 , ,則表明p1,…,pn-1已形成一個(gè)閉環(huán),終止本條輪廓線追蹤。否則返回步驟(3)繼續(xù)跟蹤。(6)把搜索起點(diǎn)移到圖像的別處,繼續(xù)進(jìn)行下一輪廓搜索。應(yīng)注意新的搜索起點(diǎn)一定要在已得到的邊緣線所圍區(qū)域之外。邊緣跟蹤結(jié)果如圖7-18(b)所示。7.3.2
邊緣跟蹤方法需要注意以下三點(diǎn):(1)在跟蹤過程中,要賦給已經(jīng)確定出的邊界點(diǎn)的已跟蹤過標(biāo)志。(2)若有多個(gè)區(qū)域,則再重復(fù)以上步驟,直到掃描點(diǎn)到達(dá)左下角點(diǎn)。(3)外側(cè)的邊界線按逆時(shí)針方向跟蹤,內(nèi)側(cè)的邊界線按順時(shí)針方向跟蹤。7.3.3OpenCV實(shí)現(xiàn)邊緣輪廓繪制輪廓檢測的目標(biāo)是確定閉合物體的形狀,特別是對(duì)于具有相同顏色強(qiáng)度的連續(xù)點(diǎn),尋找輪廓的方法是確定的,而邊緣檢測是通過檢測顏色強(qiáng)度內(nèi)的變化來進(jìn)行的。邊緣檢測對(duì)整個(gè)圖像進(jìn)行操作,而輪廓檢測僅對(duì)圖像內(nèi)的對(duì)象進(jìn)行操作。1.查找并繪制輪廓函數(shù)一個(gè)輪廓對(duì)應(yīng)著一系列的點(diǎn),這些點(diǎn)以某種方式表示圖像中的一條曲線。在OpenCV中,函數(shù)cv2.findContours()用于查找圖像的輪廓,并能夠根據(jù)參數(shù)返回特定表示方式的輪廓(曲線)。函數(shù)cv2.drawContours()能夠?qū)⒉檎业降妮喞L制到圖像上,該函數(shù)可以根據(jù)參數(shù)在圖像上繪制不同樣式(實(shí)心/空心點(diǎn)),以及線條的不同粗細(xì)、顏色等,可以繪制全部輪廓也可以僅繪制指定的輪廓。7.3.3OpenCV實(shí)現(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è)輪廓是由若干個(gè)點(diǎn)所構(gòu)成的。例如,contours[i]是第i個(gè)輪廓(下標(biāo)從0開始),contours[i][j]是第i個(gè)輪廓內(nèi)的第j個(gè)點(diǎn)。3) hierarchy:表示輪廓的層次信息。7.3.3OpenCV實(shí)現(xiàn)邊緣輪廓繪制(2)式中的參數(shù)為1) image:原始圖像。8位單通道圖像,所有非零值被處理為1,所有零值保持不變。也就是說灰度圖像會(huì)被自動(dòng)處理為二值圖像。在實(shí)際操作時(shí),可以根據(jù)需要,預(yù)先使用閾值處理等函數(shù)將待查找輪廓的圖像處理為二值圖像。2) mode:輪廓檢索模式,即輪廓提取方式,具體有4種:
cv2.RETR_EXTERNAL:只檢測外輪廓;
cv2.RETR_LIST:對(duì)檢測到的輪廓不建立等級(jí)關(guān)系;
cv2.RETR_CCOMP:檢索所有輪廓并將他們組織成兩級(jí)層次結(jié)構(gòu)。上面的一層為外邊界,下面的一層為內(nèi)孔的邊界。如果內(nèi)孔內(nèi)還有一個(gè)聯(lián)通物體,那么這個(gè)物體的邊界仍然位于頂層;
cv2.RETR_TREE:建立一個(gè)等級(jí)樹結(jié)構(gòu)的輪廓。7.3.3OpenCV實(shí)現(xiàn)邊緣輪廓繪制3) method:輪廓的近似方法,參數(shù)method決定了如何表達(dá)輪廓。在使用函數(shù)cv2.findContours()查找圖像輪廓時(shí),需要注意以下問題: 待處理的源圖像必須是灰度二值圖。因此,在通常情況下,都要預(yù)先對(duì)圖像進(jìn)行閾值分割或者邊緣檢測處理,得到滿意的二值圖像后再將其作為參數(shù)使用; 在OpenCV中,函數(shù)cv2.findContours()是從黑色背景中查找白色對(duì)象。因此,對(duì)象必須是白色的,背景必須是黑色的; 在OpenCV4.x中,函數(shù)cv2.findContours()僅有兩個(gè)返回值。7.3.3OpenCV實(shí)現(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,則表示繪制實(shí)心輪廓7.3.3OpenCV實(shí)現(xiàn)邊緣輪廓繪制
lineType:表示繪制輪廓所選用的線型;
hierarchy:表示輪廓的層次信息;
maxLevel:控制所繪制輪廓層次的深度;
offset:表示輪廓的偏移程度。7.4Hough變換霍夫變換是一種在圖像中尋找直線、圓以及其他簡單形狀的方法,是圖像處理中的一種特征提取技術(shù),它采用類似于投票的方式來獲取當(dāng)前圖像內(nèi)的形狀集合,該變換由PaulHough(霍夫)于1962年首次提出。最初的霍夫變換只能用于檢測直線和曲線,起初的方法要求知道物體邊界線的解析方程,但不需要有關(guān)區(qū)域位置的先驗(yàn)知識(shí)。1972年,經(jīng)典的霍夫變換由RichardDuda和PeterHart推廣使用,用來檢測圖像中的直線。經(jīng)過發(fā)展后,霍夫變換不僅能夠識(shí)別直線,還能識(shí)別其他簡單的圖形結(jié)構(gòu),常見的有圓、橢圓等。7.4Hough變換如果圖像分割過程中,預(yù)先已知目標(biāo)的形狀,如直線、曲線或圓等,則可以利用Hough(霍夫)變換進(jìn)行檢測,它的主要優(yōu)點(diǎn)在于受噪聲和曲線間斷的影響較小。在已知曲線形狀的條件下,Hough變換實(shí)際上是利用分散的邊緣點(diǎn)進(jìn)行曲線逼近,它也可看成一種聚類分析技術(shù)。圖像空間中的所有點(diǎn)均對(duì)參數(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)系中對(duì)(x,y)點(diǎn)的Hough變換,它表示參數(shù)空間的一條直線,如圖7-20所示。圖像空間中的點(diǎn)(x,y)對(duì)應(yīng)于參數(shù)空間中直線
,點(diǎn)
對(duì)應(yīng)于參數(shù)空間中直線
,這兩條直線的交點(diǎn)
即為圖像空間中過點(diǎn)
和
的直線的斜率和截距。事實(shí)上,圖像空間中這條直線上的所有點(diǎn)經(jīng)Hough變換后在參數(shù)空間中的直線都會(huì)交于點(diǎn)
。總之,圖像空間中共線的點(diǎn)對(duì)應(yīng)于參數(shù)空間相交的線。反之,參數(shù)空間相交于一點(diǎn)的所有直線在圖像空間里都有共線的點(diǎn)與之對(duì)應(yīng)。這就是Hough變換中的點(diǎn)線對(duì)偶關(guān)系。7.4.1Hough直線變換圖7-20直角坐標(biāo)系中的Hough變換如果直線的斜率無限大,即被檢測的直線為豎直線時(shí),采用式(7-54)是無法完成檢測的。為了能夠準(zhǔn)確識(shí)別和檢測任意方向和任意位置的直線,通常使用直線極坐標(biāo)方程來代替式(7-53)。(7-55)7.4.1Hough直線變換在極坐標(biāo)系中,橫坐標(biāo)為直線的法向角,縱坐標(biāo)為直角坐標(biāo)原點(diǎn)到直線的法向距離。圖像空間中的點(diǎn)(x,y),經(jīng)Hough變換映射到參數(shù)空間
中一條正弦曲線,如圖7-21所示。圖像空間中共直線的n點(diǎn),映射到參數(shù)空間是n條正弦曲線,且這些正弦曲線相交于點(diǎn)
。為了檢測出圖像空間中的直線,在參數(shù)空間建立一個(gè)二維累加數(shù)組
,第一維的范圍為[0,D],
為圖像中的點(diǎn)到原點(diǎn)的最大距離值;第二維的范圍為[-90°,90°]。開始時(shí)把數(shù)組初始化為零,然后由圖像空間中的邊緣點(diǎn)計(jì)算參數(shù)空間中參考點(diǎn)的可能軌跡,并對(duì)該軌跡經(jīng)過的所有
位置相對(duì)應(yīng)的數(shù)組元素
的加1。當(dāng)圖像空間中所有邊緣點(diǎn)都變換后,檢測累加數(shù)組,根據(jù)最大值所對(duì)應(yīng)的參數(shù)值
確定出直線方程的參數(shù)。Hough變換實(shí)質(zhì)上是一種投票機(jī)制,對(duì)參數(shù)空間中的離散點(diǎn)進(jìn)行投票,若投票值超過某一門限值,則認(rèn)為有足夠多的圖像點(diǎn)位于該參數(shù)所決定的直線上。這種方法受噪聲和直線出現(xiàn)間斷的影響較小。7.4.1Hough直線變換(a)一條直線對(duì)應(yīng)一個(gè)點(diǎn)
(b)一條直線上的多個(gè)點(diǎn)對(duì)應(yīng)多條交于一點(diǎn)的正弦曲線7.4.1Hough直線變換Hough變換直線檢測算法操作步驟如下。(1)根據(jù)精度要求,量化參數(shù)空間。由此建立二維累加數(shù)組
,并將其初始化為零。(2)自上而下、自左向右遍歷圖像,如果檢測到當(dāng)前點(diǎn)(x,y)是邊緣點(diǎn),則根據(jù)式(8-50)計(jì)算出每一個(gè)對(duì)應(yīng)的r值。(3)根據(jù)和r的值,在相應(yīng)的數(shù)組元素上加1,即
。(4)重復(fù)執(zhí)行步驟(2)和(3),直到所有的邊緣點(diǎn)都處理完畢,(5)找到累加數(shù)組中最大元素值,其對(duì)應(yīng)的參數(shù)值為
,從而確定出圖像空間中直線的方程為7.4.1Hough直線變換Hough變換不需要預(yù)先組合或連接邊緣點(diǎn)。位于感興趣曲線上的邊緣點(diǎn)可能構(gòu)成圖像邊緣的一個(gè)小部分。特別指出,Hough變換可以允許位于曲線上的邊緣數(shù)量少于實(shí)際的邊緣數(shù)量,而大多數(shù)魯棒性回歸算法無法適用于這種情況。Hough變換所基于的假設(shè)是在大量噪聲出現(xiàn)的情況下,最好是在參數(shù)空間中去求滿足圖像邊緣最大數(shù)量的那個(gè)點(diǎn)。如果圖像中有幾條曲線和給定模型相匹配,則在參數(shù)空間中會(huì)出現(xiàn)幾個(gè)峰值。此時(shí),可以探測每一個(gè)峰值,去掉對(duì)應(yīng)于某一個(gè)峰值的曲線邊緣,再檢測余下的曲線,直到?jīng)]有明顯的邊緣。但是,確定峰值的顯著性是件很困難的事。7.4.1Hough直線變換在進(jìn)行Hough變換之前,需要對(duì)原始圖像做必要的預(yù)處理,包括二值化和細(xì)線化操作,得到線幅寬度等于1像素的圖像邊緣,然后再利用Hough變換提取出圖像中的直線。需要說明的是,對(duì)和量化過粗,則計(jì)算出的直線參數(shù)就不精確;如果量化程度過細(xì),則計(jì)算量增加。因此,對(duì)和的量化要在滿足一定精度條件下進(jìn)行,也要兼顧計(jì)算量的問題。因此,程序中和的步長決定了計(jì)算量和計(jì)算精度。7.4.2Hough變換圓檢測圓形輪廓檢測在數(shù)字圖像的形態(tài)識(shí)別領(lǐng)域中有著很重要的地位,圓檢測即是確定圓的圓心坐標(biāo)與半徑。令
是圖像空間待檢測圓周上點(diǎn)的集合,若該圓周半徑為r、圓心為(a,b),則其在圖像空間中的方程為:(7-56)同樣,若(x,y)為圖像空間中的一點(diǎn),它在參數(shù)空間(a,b,r)中的方程為:(7-57)顯然,該方程為三維錐面。對(duì)于圖像空間中任意一點(diǎn)均有參數(shù)空間的一個(gè)三維錐面與之相對(duì)應(yīng),如圖7-22所示;同一圓周上的n點(diǎn),對(duì)應(yīng)于參數(shù)空間中相交于某一點(diǎn)
的n個(gè)錐面,這點(diǎn)恰好對(duì)應(yīng)于圖像空間中圓的圓心坐標(biāo)與半徑。7.4.2Hough變換圓檢測一般情況下,圓經(jīng)過Hough變換后的參數(shù)空間是三維的。所以在Hough變換圓檢測時(shí)需要在參數(shù)空間中建立一個(gè)三維累加數(shù)組
;對(duì)于圖像空間中的邊緣點(diǎn),根據(jù)式(7-57)計(jì)算出該點(diǎn)在
三維網(wǎng)格上的對(duì)應(yīng)曲面,并在相應(yīng)累加數(shù)組單元上加1。可見利用Hough變換檢測圓的原理和計(jì)算過程與檢測直線類似,只是復(fù)雜程度增大了。為了降低存儲(chǔ)資源,減少計(jì)算量,參數(shù)空間維數(shù)的降低是非常必須的。對(duì)于圖像空間中的圓,如圖7-23所示,為邊緣點(diǎn)
的梯度方向,并且一定是指向圓心的。利用一階偏導(dǎo)數(shù)可以計(jì)算出該梯度角為:(7-58)7.4.2Hough變換圓檢測圖7-22圓的參數(shù)空間示意圖圖7-23圖像空間中的圓由此,圓心坐標(biāo)的計(jì)算公式表示為:(7-59a)(7-59b)7.4.2Hough變換圓檢測對(duì)式(7-59a)整理后可以得到(7-60)將其代入式(7-59b)得(7-61)于是有(7-62)可見,當(dāng)?shù)玫竭吘壧荻冉堑恼兄岛?,即可通過式(7-62)得到圓在參數(shù)空間上的映射,實(shí)現(xiàn)了累加數(shù)組維數(shù)的降低,即由三維降到二維。7.4.2Hough變換圓檢測Hough變換圓檢測算法操作步驟如下。(1)根據(jù)精度要求,量化參數(shù)空間a和b,由此建立二維累加數(shù)組A(a,b),并將其初始化為零。(2)計(jì)算邊緣輪廓圖像的梯度角正切值。(3)自上而下、自左向右掃描圖像,如果檢測到當(dāng)前點(diǎn)(x,y)是邊緣點(diǎn),查找當(dāng)前點(diǎn)所對(duì)應(yīng)的梯度角正切值,然后根據(jù)式(7-62)計(jì)算出每一個(gè)a對(duì)應(yīng)的b值。(4)根據(jù)a和b的值,執(zhí)行
。(5)循環(huán)執(zhí)行步驟(3)、(4),直到所有點(diǎn)全部處理完畢。(6)找到累加數(shù)組中最大元素值對(duì)應(yīng)坐標(biāo)位置,該結(jié)果即為式(7-62)描述的圓心坐標(biāo)。(7)將圓心坐標(biāo)代入圖像空間中圓的方程式(7-56),計(jì)算所有邊緣點(diǎn)至圓心坐標(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á)式時(shí),就不能使用一個(gè)確定的變換方程來實(shí)現(xiàn)Hough變換。利用邊緣點(diǎn)的梯度信息,可以將上述對(duì)解析曲線的Hough變換算法推廣至用于檢測任意形狀的輪廓,這就是廣義Hough變換。廣義Hough變換的思路是:對(duì)于一個(gè)任意形狀的目標(biāo),可以在曲線包圍的區(qū)域選取一參考點(diǎn)(a,b),通常將其選擇為圖形的中心點(diǎn)。設(shè)(x,y)為邊緣上一點(diǎn),(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ù),以為索引可以建立一個(gè)關(guān)于r和的關(guān)系查找表(參考表)。對(duì)于每一個(gè)梯度角為的邊緣點(diǎn)(x,y),可以根據(jù)下面的約束式預(yù)先計(jì)算出參考點(diǎn)的可能位置:(7-63)7.4.4OpenCV實(shí)現(xiàn)Hough變換霍夫變換主要包括霍夫直線變換和霍夫圓變換。霍夫直線變換用來在圖像內(nèi)尋找直線,霍夫圓變換用來在圖像內(nèi)尋找圓。在OpenCV中,前者可以用函數(shù)cv2.HoughLines()和函數(shù)cv2.HoughLinesP()實(shí)現(xiàn),后者可以用函數(shù)cv2.HoughCircles()。7.4.4OpenCV實(shí)現(xiàn)Hough變換1.霍夫直線檢測在OpenCV中提供了cv2.HoughLines()函數(shù)來實(shí)現(xiàn)標(biāo)準(zhǔn)霍夫直線檢測,其一般格式為:lines=cv2.HoughLines(image,rho,theta,threshold)其中:
lines:表示函數(shù)的返回值,是檢測到的直線參數(shù),即
,類型為numpy.ndarray;
image表示輸入的8位單通道二值圖像;
rho表示以像素為單位的距離r的精度,一般使用的精度為1;
theta表示角度的精度,一般使用的精度為
,表示要搜索所有可能的角度;
threshold表示判斷閾值,該值越小,判斷出的直線就越多。7.4.4OpenCV實(shí)現(xiàn)Hough變換在使用標(biāo)準(zhǔn)的霍夫變換檢測直線時(shí),雖然可以檢測出圖像中的直線,但是會(huì)出現(xiàn)很多重復(fù)的檢測直線。為了解決這個(gè)問題,提出了概率霍夫變換,這是一種對(duì)霍夫變換的優(yōu)化,它只需要一個(gè)足以進(jìn)行線檢測的隨機(jī)點(diǎn)子集即可。在OpenCV中提供了cv2.HoughLinesP()函數(shù)來實(shí)現(xiàn)概率霍夫直線檢測,其一般格式為:lines=cv2.HoughLinesP(image,rho,theta,threshold,minLineLength,maxLineGap)其中:7.4.4OpenCV實(shí)現(xiàn)Hough變換
lines:表示函數(shù)的返回值,是檢測到的直線參數(shù),即
,類型為numpy.ndarray;
image表示輸入的8位單通道二值圖像;
rho表示以像素為單位的距離r的精度,一般使用的精度為1;
theta表示角度的精度,一般使用的精度為
,表示要搜索所有可能的角度;
threshold表示判斷閾值,該值越小,判斷出的直線就越多;值越大,判斷出的直線就越少;
minLineLength表示用來控制所接受直線的最小長度,默認(rèn)值為0;
maxLineGap用來控制接受共線線段之間的最小間隔,即在一條線中兩點(diǎn)的最大間隔。如果兩點(diǎn)間的間隔超過了參數(shù)maxLineGap的值,就認(rèn)為這兩點(diǎn)不在一條直線上,默認(rèn)值為0。7.4.4OpenCV實(shí)現(xiàn)Hough變換例7-4使用cv2.HoughLines()函數(shù)和cv2.HoughLinesP()函數(shù)對(duì)圖像實(shí)現(xiàn)霍夫直線檢測。a)原始圖像7.4.4OpenCV實(shí)現(xiàn)Hough變換b)Canny檢測圖c)標(biāo)準(zhǔn)霍夫直線檢測d)概率霍夫直線檢測7.4.4OpenCV實(shí)現(xiàn)Hough變換圖7-26中,圖7-26a)是原始圖像;圖7-26b)是Canny邊緣檢測得到的二值化邊緣信息圖像;圖7-26c)是標(biāo)準(zhǔn)霍夫直線檢測得到的圖像;圖7-26d)是概率霍夫直線檢測得到的圖像。7.4.4OpenCV實(shí)現(xiàn)Hough變換2.霍夫圓檢測霍夫變換不僅可以用來檢測直線,還可以用來檢測任何能使用參數(shù)方程表示的對(duì)象。在OpenCV中,使用cv2.HoughCircles()函數(shù)實(shí)現(xiàn)標(biāo)準(zhǔn)霍夫圓檢測,其一般格式為:circles=cv2.HoughCircles(image,method,dp,minDist,param1,param2,minRadius,MaxRadius)其中:
circles:表示函數(shù)的返回值,是檢測到的圓形參數(shù),由圓心坐標(biāo)和半徑構(gòu)成的numpy.ndarray;
image表示輸入的8位單通道灰度圖像;
method表示檢測方法,截止到OpenCV4.0版本,HOUGH_GRADIENT是唯一可用的參數(shù)值。該參數(shù)代表的是霍夫圓檢測中兩輪檢測所使用的的方法;7.4.4OpenCV實(shí)現(xiàn)Hough變換
dp表示累積器分辨率,用來指定圖像分辨率與圓心累加器分辨率的比例;
minDist表示圓心間的最小間距,一般作為閾值使用,如果該值太小,則會(huì)有多個(gè)臨近的圓被檢測出來,如果該值太大,則可能在檢測時(shí)漏掉一些圓;
param1表示Canny邊緣檢測器的高閾值,低閾值是高閾值的一半;該參數(shù)是缺省的,缺省時(shí)默認(rèn)是100;
param2表示圓心位置必須受到的投票數(shù);該值越大,檢測到的圓越少,該值越小,檢測到的圓越多。這個(gè)參數(shù)時(shí)缺省的,在缺省時(shí)默認(rèn)值為100;
minRadius表示所接受圓的最小半徑,小于該值的圓不會(huì)被檢測出來。該參數(shù)是缺省的,在缺省時(shí)默認(rèn)值是0,此時(shí)該參數(shù)不起作用;
minRadius表示所接受圓的最大半徑,大于該值的圓不會(huì)被檢測出來。該參數(shù)是缺省的,在缺省時(shí)默認(rèn)值是0,此時(shí)該參數(shù)不起作用。7.4.4OpenCV實(shí)現(xiàn)Hough變換需要特別注意,在調(diào)用函數(shù)cv2.HoughCircles()之前,要對(duì)源圖像進(jìn)行平滑操作,以減少圖像中的噪聲,避免發(fā)生誤判。例7-5使用cv2.HoughCircles()函數(shù)檢測一幅圖像中的圓形。 a)原始圖像 b)霍夫圓檢測圖思考與練習(xí)7-1簡述點(diǎn)檢測各算子的特點(diǎn)。7-2簡述Canny邊緣檢測的步驟有哪些?7-3什么是圖像的輪廓?與圖像的邊緣有什么關(guān)系?7-4什么是Hough變換?試述Hough變換直線檢測的原理。7-5簡述霍夫直線檢測與霍夫圓檢測的基本原理。7-6編寫程序,使用霍夫圓檢測的方法檢測用手機(jī)拍攝的一幅圖像中的圓。第8章視覺動(dòng)態(tài)紋理識(shí)別8.1紋理描述8.2紋理特征 8.2.1灰度共生矩陣 8.2.2自相關(guān)函數(shù) 8.2.3灰度差值統(tǒng)計(jì) 8.2.4傅里葉描述子8.3動(dòng)態(tài)紋理識(shí)別 8.3.1局部二值模式(LBP) 8.3.2體積局部二值模式(VLBP) 8.3.3LBP-TOP紋理識(shí)別方法第8章視覺動(dòng)態(tài)紋理識(shí)別紋理識(shí)別是視覺領(lǐng)域的研究熱點(diǎn),紋理可分為自然紋理和人工紋理,自然紋理指的是真實(shí)存在物體的表面結(jié)構(gòu),比如火焰、水中的波紋,樹木的樹皮、人的面目表情等。人工紋理指人工合成的紋理,比如墻壁的紋理、棉被的紋理、筷子的紋理等。通常自然紋理是不規(guī)則且分布不均的,而人工紋理是在人為因素的影響下存在一定的規(guī)則性。動(dòng)態(tài)紋理是靜態(tài)紋理在時(shí)空域的擴(kuò)展,它們通常被視為在時(shí)域中表現(xiàn)出某些靜止屬性的運(yùn)動(dòng)場景的視頻。典型的動(dòng)態(tài)紋理形式包括火焰、海浪、微表情和運(yùn)動(dòng)物體的視頻。在過去的十年里,動(dòng)態(tài)紋理的建模和分類極受關(guān)注。動(dòng)態(tài)紋理分類有很多應(yīng)用,包括視頻檢索、運(yùn)動(dòng)識(shí)別、交通監(jiān)控、火災(zāi)檢測、面部分析、人群管理、唇讀、微表情分析和物體跟蹤。8.1紋理描述紋理描述的目的是得到一些量度用來對(duì)一個(gè)特定紋理進(jìn)行分類。因此,如形狀描述那樣,對(duì)這些量度也有不變性要求。特征提取的不變性要求即位置、尺度和旋轉(zhuǎn)不變性??梢酝瑯舆m用于紋理提取。畢竟,紋理是一種特征,與形狀不同的是,它的定義很模糊。顯然,我們要求位置不變性:描述紋理的量度不應(yīng)該隨分析區(qū)域(對(duì)大圖像而言)位置的不同而變化。要求旋轉(zhuǎn)不變性,但這個(gè)要求不像位置不變性那么嚴(yán)格;紋理的定義雖然沒有隱含朝向的知識(shí),不過可以推測出來。最不嚴(yán)格的要求是尺度不變性,因?yàn)樗饕Q于應(yīng)用。假設(shè)遙感圖像中利用紋理來分析植被。尺度不變性意味著近處的小樹應(yīng)該得到與遠(yuǎn)處大樹相同的量度。如果目的僅僅是分析植被覆蓋,這樣的量度也會(huì)令人滿意。但是,如果目的是要計(jì)算植被的年齡以便進(jìn)行補(bǔ)給,那將不能令人滿意,因?yàn)槌叨炔蛔兞繌睦碚撋蠠o法區(qū)分小樹和大樹。8.1紋理描述與特征提取不同,紋理描述很少用到邊緣檢測,由于邊緣檢測的一個(gè)主要目的是去除對(duì)全體亮度級(jí)的依賴。高階不變量諸如射影不變性,也很少用于紋理描述。這大概是因?yàn)榧y理的許多應(yīng)用都與遙感圖像相似,或者僅局限于工業(yè)應(yīng)用,其中,攝像機(jī)幾何關(guān)系可以得到控制。8.2紋理特征講到紋理(texture),人們自然會(huì)立刻想到木制家具上的木紋以及花布上的花紋,木紋為天然紋理,花紋為人工紋理。人工紋理是由自然背景上的符號(hào)排列組成的,這些符號(hào)可以是線條、點(diǎn)、字母、數(shù)字等,人工紋理往往是有規(guī)則的。自然紋理是具有重復(fù)排列現(xiàn)象的自然景象,如森林、碎石、磚墻、草地之類的照片。自然紋理往往是無規(guī)則的,它反映了物體表面顏色或灰度的某種變化,而這些變化又與物體本身的屬性相關(guān)。一些紋理圖像如圖8-1所示。8.2紋理特征8.2紋理特征圖像紋理分析在許多學(xué)科都有廣泛應(yīng)用。例如,氣象云圖多是紋理型的,在紅外云圖上,幾種不同紋理特征的云類(如卷云、積雨云、積云和層云)的識(shí)別就可以用紋理作為一大特征;衛(wèi)星遙感圖像中,地表的山脈、草地、沙漠、森林、城市建筑群等均表現(xiàn)出不同的紋理特征,因此通過分析衛(wèi)星遙感圖像的紋理特征可以進(jìn)行區(qū)域識(shí)別、國土整治、森林利用、城市發(fā)展、土地荒漠化等方面的宏觀研究;顯微圖像中,如細(xì)胞圖像、金相圖像、催化劑表面圖像等均具有明顯的紋理特征,對(duì)它們進(jìn)行紋理結(jié)構(gòu)分析可以得到相關(guān)物理信息。8.2紋理特征關(guān)于圖像紋理的精確定義迄今還沒有一個(gè)統(tǒng)一的認(rèn)識(shí)。一般來說,圖像紋理是圖像中灰度或顏色在空間上的變化模式,反映了周期性出現(xiàn)的紋理基元和它的排列規(guī)則。而紋理基元定義為,由像素組成的具有一定形狀和大小的集合,如條狀、絲狀、圓斑、塊狀等。同時(shí),紋理模式與紋理尺度有關(guān),而紋理尺度又與圖像分辨率有關(guān)。例如,從遠(yuǎn)距離觀察由地板磚構(gòu)成的地板時(shí),我們看到的是地板磚塊構(gòu)成的紋理,而沒有看到地板磚本身的紋理模式;當(dāng)在近距離觀察同樣的場景時(shí),我們開始察覺到每一塊磚上的紋理模式,如圖8-2所示。
8.2紋理特征對(duì)于紋理特征分析,目前主要采用統(tǒng)計(jì)方法和結(jié)構(gòu)分析方法。如果從紋理對(duì)人產(chǎn)生的直觀印象出發(fā),將包含有心理學(xué)因素,這樣就會(huì)產(chǎn)生多種不同的統(tǒng)計(jì)特征。描述紋理統(tǒng)計(jì)特征的技術(shù)有許多,例如,灰度共生矩陣、自相關(guān)函數(shù)、灰度差分、功率譜、正交變換、灰度級(jí)行程長等。當(dāng)紋理基元很小并成為微紋理時(shí),統(tǒng)計(jì)方法特別有效。如果從圖像本身的結(jié)構(gòu)出發(fā),則認(rèn)為紋理是結(jié)構(gòu),根據(jù)這一觀點(diǎn),紋理特征分析應(yīng)該采用結(jié)構(gòu)分析方法。結(jié)構(gòu)分析法首先將紋理看成是由許多紋理基元按照一定的位置規(guī)則組成的,然后分兩個(gè)步驟處理:提取紋理基元和推論紋理基元位置規(guī)律。該方法適合于規(guī)則和周期性紋理。8.2.1灰度共生矩陣灰度共生矩陣(gray-levelco-occurrencematrix)能較精確地反映紋理粗糙程度和重復(fù)方向。由于紋理反映了灰度分布的重復(fù)性,人們自然要考慮圖像中點(diǎn)對(duì)之間的灰度關(guān)系?;叶裙采仃囀且粋€(gè)二維相關(guān)矩陣,是距離和方向的函數(shù),用
表示,定義如下:首先規(guī)定一個(gè)位移矢量
,然后,計(jì)算被d分開且具有灰度級(jí)i和j的所有像素對(duì)數(shù)。位移矢量d為(1,1)是指像素向右和向下各移動(dòng)一步。顯然,灰度級(jí)數(shù)為n時(shí),灰度共生矩陣是一個(gè)
矩陣。8.2.1灰度共生矩陣?yán)?,考慮一個(gè)具有3個(gè)灰度級(jí)(0、1、2)的5*5圖像,如圖8-3(a)所示,由于僅有三個(gè)灰度級(jí),故
是一個(gè)3*3矩陣。在5*5圖像中,共有16個(gè)像素對(duì)滿足空間分離性?,F(xiàn)在來計(jì)算所有的像素對(duì)數(shù)量,即計(jì)算所有灰度值i與灰度值j相距為d的像素對(duì)數(shù)量,然后,把這個(gè)數(shù)填入矩陣
的第i行和第j列。例如,在距離矢量
的情況下,i=0,j=1的組合(在0值的右下面為1的頻率)有2次,即
,因此,在
項(xiàng)中填寫2。完整的矩陣如圖8-30(b)所示。8.2.1灰度共生矩陣如果計(jì)算關(guān)于所有的d的灰度共生矩陣,這就等于計(jì)算出了圖像的所有二次統(tǒng)計(jì)量,但是,因?yàn)槿绻菢右粊硇畔⒘烤蜁?huì)過多,所以在實(shí)際中選擇適當(dāng)?shù)膁,只對(duì)它求共生矩陣,多數(shù)場合使用圖8-4中所示的四種位移。圖中,為了表示
的關(guān)系,而使用了相同的共生矩陣,即用
來表示
因此,所有的共生矩陣
都是對(duì)稱矩陣。8.2.1灰度共生矩陣圖8-4灰度共生矩陣8.2.1灰度共生矩陣作為紋理識(shí)別的特征量,不是直接使用上述共生矩陣,而是在灰度共生矩陣的基礎(chǔ)上再計(jì)算如下的特征量(即角二階矩、對(duì)比度或慣性矩、熵和逆差矩或均勻度),并根據(jù)這些值給紋理賦予特征。假設(shè)在給定距離和方向參數(shù)情況下的共生矩陣
的元素已歸一化成為頻率,即
。(1)角二階矩(angularsecondmoment)或能量(energy)。(8-1)角二階矩是灰度共生矩陣元素值平方和,所以也稱做能量,反映了圖像灰度分布均勻程度和紋理粗細(xì)度。當(dāng)灰度共生矩陣的元素分布較集中于對(duì)角線時(shí),說明從局部區(qū)域觀察圖像的灰度分布是較均勻的;從圖像整體來觀察,紋理較粗,含有的能量較大。反之,細(xì)紋理時(shí)角二階矩較小。當(dāng)
都相等的時(shí)候,具有最大能量。8.2.1灰度共生矩陣(2)對(duì)比度(contrast)或慣性矩。(8-2)對(duì)比度反映紋理的清晰度。圖像紋理溝紋越深,其對(duì)比度越大,對(duì)圖像清晰度、細(xì)節(jié)表現(xiàn)更加有利。(3)熵(entropy)。熵是一種用于測量灰度級(jí)分布隨機(jī)性的特征參數(shù),定義為:
(8-3)若圖像沒有任何紋理,則灰度共生矩陣幾乎為零陣,則熵值也接近零。若圖像充滿著細(xì)紋理,則
的元素值近似相等,該圖像的熵值最大。若圖像中分布著較少的紋理,
的元素值差別較大,則圖像的熵值較小。8.2.1灰度共生矩陣(4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度租船運(yùn)輸費(fèi)用及船舶租賃法律咨詢合同
- 二零二五年度中國銀行商業(yè)貸款合同編號(hào)查詢與還款期限確認(rèn)協(xié)議
- 二零二五年度應(yīng)屆生線下簽約方協(xié)議全流程就業(yè)跟蹤與評(píng)估合同
- 二零二五年度房產(chǎn)抵押債權(quán)證券化協(xié)議范本
- 2025年度智慧城市建設(shè)橫向課題合作協(xié)議書
- 2025年中國內(nèi)徑接頭市場調(diào)查研究報(bào)告
- 中國按摩椅市場競爭態(tài)勢及營銷策略分析報(bào)告2025-2030年
- 投資入股店鋪合同范本
- 砂石場包工合同范本
- 買賣合同范本小學(xué)
- 市政工程混凝土排水溝設(shè)計(jì)方案
- 2024年湖北省武漢市中考英語真題(含解析)
- 燕窩采購合同模板
- 《原畫設(shè)計(jì)(第2版)》中職全套教學(xué)課件
- 2024年山東省青島市中考道德與法治試題卷(含答案及解析)
- GB/T 44561-2024石油天然氣工業(yè)常規(guī)陸上接收站液化天然氣裝卸臂的設(shè)計(jì)與測試
- 新能源發(fā)電技術(shù) 課件 第一章-新能源發(fā)電概述
- 北師大版(三起)(2024)三年級(jí)上冊英語Unit 1 Family單元測試卷(含答案)
- 光伏電站組件清洗技術(shù)規(guī)范
- 延遲合同范本
- 細(xì)胞生物學(xué)(第五版)-第10章 核糖體
評(píng)論
0/150
提交評(píng)論