




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
數(shù)字圖像信號處理與Python實現(xiàn)第5章圖像特征提取圖像特征是指可以對圖像特點或內(nèi)容進行表征的一系列屬性的集合,主要包括圖像自然特征(亮度、色彩、紋理等)和人為特征(如圖像頻譜、圖像直方圖等)。所謂圖像特征提取可以看作一種廣義上的圖像變換,即從原始圖像特征表示空間轉化到圖像的特征屬性空間。特征提取過程是對圖像中所包含的信息進行處理和分析,將不易受隨機因素干擾的信息作為該圖像的特征提取出來,將原始特征表示為一組具有明顯物理意義或者統(tǒng)計意義的特征。特征提取過程之后一般還會伴隨特征選擇的過程,特征選擇過程是去除冗余信息的過程,具有提高識別精度、減少運算量、提高運算速度等作用。一般情況下,良好的特征應具有四個特點1、代表性或可區(qū)分性:能夠對該類別對象進行高效表達,不同的類別對象之間的特征的差異越大越好,能夠滿足相應任務的要求。如要區(qū)分乒乓球和足球,紋理特征就是一個不錯的特征,因為足球一般有六邊形紋理結構。如要進行圖像分割時,圖像中的邊緣突變就是一個很好的特征,可以明確表示圖像內(nèi)容發(fā)生了改變。2、穩(wěn)定性:同一類別圖像的特征應該具有類似特征值,保證類別內(nèi)圖像的相似度大于類別間圖像的相似度。如,區(qū)分成熟蘋果和不成熟蘋果時,顏色是一個比較好的特征,因為大致不成熟的蘋果青色,而成熟的蘋果呈現(xiàn)黃色和紅色。蘋果尺寸大小這個特征在區(qū)分成熟和不成熟蘋果時,則不是一個穩(wěn)定特征,因為通過尺寸大小并不能將成熟和不成熟蘋果區(qū)分開。3、獨立性:特征之間應該彼此獨立,盡量減少關聯(lián)性,如果特征之間關聯(lián)性較強,則影響圖像內(nèi)容的較好表達。如,蘋果的直徑和蘋果的重量這兩個特征就屬于關聯(lián)性較強的兩個特征,它們都可以反映蘋果的大小。如果同時使用大小和重量,就會顯得冗余。圖像特征提取一般可以分為底層特征提取和高層語義特征提取兩個層次。高層語義特征常常關注語義層次的特征,針對識別任務,如人類識別、圖像分類等。而底層特征提取,則一般提取圖像的顏色、紋理、形狀等一般特征。底層特征提取鮮有關注圖像的語義信息,提取的信息一般比較泛且普遍。而高層語義特征提取一般需要關聯(lián)語義,如人臉識別中很多語義特征與人臉的部件相關,能夠反映圖像中是否存在某類對象。高層語義特征以底層特征提取為基礎,輔以模式識別等方法,建立語義關聯(lián),形成語義特征。深度學習的出現(xiàn)為特征提取提供了新的思路,將底層特征提取和高層語義關聯(lián)做到了很好的銜接,大大提升了圖像語義分析的效果。根據(jù)圖像特征提取的相對尺度,可以將圖像特征提取分為全局特征提取和局部特征提取兩類。其中全局特征提取關注圖像的整體表征,常見全局特征包括顏色特征、紋理特征、形狀特征、空間位置關系特征等。而局部特征提取技術關注圖像某個局部區(qū)域的特殊性質(zhì),一幅圖像中往往包含若干興趣區(qū)域,可以從這些區(qū)域中提取數(shù)量不等的若干個局部特征。和全局特征提取過程相比,局部特征提取過程首先需要確定要描述的興趣區(qū)域,然后再對興趣區(qū)域進行特征描述。本章內(nèi)容安排如下:首先對較為底層的全局特征進行介紹,5.1節(jié)介紹顏色特征提取,5.2節(jié)講述紋理特征提取過程,5.3節(jié)介紹形狀特征提取相關技術;后續(xù)節(jié)次將介紹局部特征相關技術,5.4節(jié)介紹邊緣特征提取相關技術,5.5節(jié)介紹點特征提取相關技術;最后是小節(jié)以及練習題。5.1顏色特征提取顏色特征是比較簡單但是應用較為廣泛的一種視覺特征,顏色特征往往和圖像中所包含的對象或場景相關。與其它圖像特征相比,顏色特征相對于圖像的尺寸、方向、視角變化的依賴性比較小,對尺寸、方向、視角變化具有比較好的魯棒性。顏色特征是一種全局特征,描述了圖像或圖像區(qū)域所對應的景物的表面性質(zhì)。一般顏色特征是基于像素值分布的特征,此時所有屬于圖像或圖像區(qū)域的像素都有各自的貢獻。目前使用的顏色特征主要包括顏色直方圖、顏色矩、顏色集以及顏色聚合向量、顏色相關圖等。5.1.1顏色直方圖直方圖描述了該圖像中像素顏色的數(shù)值分布情況,可以反映顏色的統(tǒng)計分布和基本色調(diào)。直方圖只包含了該圖像中某一顏色值出現(xiàn)的頻數(shù),然而卻丟失了圖像像素分布的空間位置信息。任一幅圖像都能唯一的給出一幅與它對應的直方圖,但不同的圖像可能有相同的顏色分布,從而就具有相同的直方圖,因此直方圖與圖像是一對多的關系。如將圖像劃分為若干個子區(qū)域,所有子區(qū)域的直方圖之和等于全圖直方圖。一般情況下,由于圖像上的背景和前景物體顏色分布明顯不同,從而在直方圖上會出現(xiàn)雙峰特性,但背景和前景顏色較為接近的圖像不具有這個特性。顏色直方圖主要包括一般直方圖、累加直方圖、主色調(diào)直方圖等。一般直方圖法:顏色直方圖是最基本的顏色特征表示方法,它反映的是圖像中像素顏色值的組成分布,即出現(xiàn)了哪些顏色以及各種顏色出現(xiàn)的概率。假設為圖像F中某一特定顏色的像素個數(shù),圖像F中像素總數(shù)為,則像素出現(xiàn)的頻率為:整個圖像F的一般顏色直方圖可以表示為其中n表示某類顏色可能取值的個數(shù)。顏色直方圖所在顏色空間可以是普通的RGB顏色空間,也可以是HSV顏色空間、LUV顏色空間或LAB顏色空間。下面給出使用skimage求取圖像顏色直方圖的代碼,結果如圖5-1所示fromskimageimportexposure,dataimage=data.coffee()#計算直方圖hist_r=exposure.histogram(image[:,:,0],nbins=256)hist_g=exposure.histogram(image[:,:,1],nbins=256)hist_b=exposure.histogram(image[:,:,2],nbins=256)圖5-1彩色圖像顏色直方圖如上代碼給出了使用skimage的exposure的histogram函數(shù)計算直方圖的方法,并在圖中給出顏色直方圖可視化的結果。讀者可以嘗試修改程序,計算HSV及其它顏色空間表示的顏色直方圖。一般顏色直方圖法對于圖像旋轉、圖像的小幅平移、小幅縮放等變換不敏感,且對圖像質(zhì)量變化(增加噪聲)不敏感,所以一般直方圖方法對適合難以進行語義分割的圖像和無需考慮物體空間位置的圖像進行描述。另外由于計算機的固有量化機制,導致一般直方圖方法會忽略顏色間的相似性。后來許多算法從這一點出發(fā)對一般直方圖方法進行改進,產(chǎn)生了如全局累加直方圖法和局部累加直方圖法等算法。全局累加直方圖:當圖像中的顏色值不能取遍所有可能顏色值時,一般直方圖方法中就會出現(xiàn)一些零值。這些零值區(qū)域部分的出現(xiàn)會影響相似性度量的計算,使得計算出的相似度并不能準確反映圖像之間的顏色分布差異。為了彌合一般直方圖方法的缺陷,在一般直方圖方法的基礎之上,使用全局累加直方圖對算法進行改進。假設圖像F中某一特征的一般顏色直方圖為,令表示顏色小于等于的所有元素的顏色直方圖的累加和,則該圖像的該類特征累加直方圖可以表示為在全局累加直方圖中,相鄰顏色的頻數(shù)在直方圖中也相鄰,通過累加消除了零值區(qū)域部分的問題。和全局直方圖相比,雖然全局累加直方圖所需的存儲量和計算量都有一定程度的增加,但是全局累加直方圖方法消除了常見的一般直方圖方法中的零值問題,也解決了一般全局直方圖量化過細導致的度量效果下降的缺陷。主色調(diào)直方圖:在一幅圖像中,不同顏色值出現(xiàn)的概率是不盡相同的,往往少數(shù)幾種顏色就涵蓋了整幅圖像的主色調(diào)。主色調(diào)直方圖基于這種思路,通過統(tǒng)計計算出圖像中每種顏色出現(xiàn)的頻率,然后選出出現(xiàn)頻率最高的幾種顏色作為主色調(diào)。使用主色調(diào)直方圖并不會降低顏色直方圖匹配的效果,反而會抑制圖像非主要成分的噪聲,降低噪聲對圖像匹配的影響。最后小結一些顏色直方圖的優(yōu)缺點優(yōu)點:計算簡單,對平移和旋轉不敏感,能簡單描述一幅圖像中顏色的全局分布。缺點:無法捕捉顏色組成之間的空間位置關系,丟失對象之間空間位置關系。5.1.2顏色矩矩是非常重要的統(tǒng)計量,用于表征數(shù)據(jù)分布特點。在統(tǒng)計中一階矩通常表示數(shù)據(jù)分布的均值,二階矩表示數(shù)據(jù)分布的方差,使用三階矩表示數(shù)據(jù)分布的偏移度。圖像的顏色矩用于對圖像內(nèi)的顏色分布進行表征,是比較重要的一種全局圖像特征表示。數(shù)字圖像中顏色分布的統(tǒng)計信息主要集中在低階矩中。圖像顏色矩特征提取時主要提取圖像顏色矩中的一階矩、二階矩和三階矩,對于一般圖像而言,這三種統(tǒng)計特征已經(jīng)足以表達數(shù)字圖像的顏色分布。相對于顏色直方圖特征,顏色矩特征提取的優(yōu)點是無須對顏色特征進行提前量化。對于數(shù)字圖像,則其一階顏色矩定義其中表示圖像的第個圖像通道的第個像素的像素值。圖像二階顏色矩定義:圖像三階顏色矩定義:其中一階矩可以表征該顏色通道的平均響應強度,二階矩可以表示該顏色通道響應方差,三階矩可以表征該顏色通道分布偏移度。針對彩色圖像,圖像的顏色矩一共有九個分量,每個顏色通道均有三個低階矩。顏色矩僅僅使用少數(shù)幾個矩,容易導致過多虛警,因而顏色矩常和其他特征配合使用。下面的python程序展示了如何使用python提取圖像的顏色矩特征。fromskimageimportdata,ioimportnumpyasnpfromscipyimportstatsimage=data.coffee()#求RGB圖像顏色矩特征一共9維特征#定義3x3數(shù)組分別對RGB圖像三個通道求均值、方差、偏移量features=np.zeros(shape=(3,3))#遍歷圖像的三個通道forkinrange(image.shape[2]):#均值mu=np.mean(image[:,:,k])#方差delta=np.std(image[:,:,k])#偏移量skew=np.mean(stats.skew(image[:,:,k]))features[0,k]=mufeatures[1,k]=deltafeatures[2,k]=skewprint(features)此處用到了numpy庫的均值函數(shù)mean、方差函數(shù)std、以及scipy的偏度函數(shù)skew。顏色矩的特點:圖像的顏色矩有九個分量(3個顏色分量,每個分量上3個低階矩);與其它顏色特征相比非常簡潔;分辨力較弱;顏色矩一般和其它特征結合使用,起到縮小范圍的作用。5.1.3顏色集顏色集又可以稱為顏色索引集,顏色集是對圖像顏色直方圖的一種近似。該方法的步驟是:一、將圖像從RGB顏色空間轉換到HSV顏色空間等視覺均衡顏色空間,并且要將顏色空間量化為若干個格子。二、使用基于色彩的自動分割技術將圖像劃分為若干子區(qū)域。三每個子區(qū)域使用顏色量化空間中的某個顏色分類進行索引,從而可以將圖像表示為一個二進制的顏色索引集。最簡單的顏色集實現(xiàn)是在顏色直方圖基礎上設置閾值形成。如給定某一顏色值m,給定閾值,由直方圖生成顏色集的方法如下其中表示直方圖對應顏色值為m位置處的分量。由此可見,顏色集表示為一個二進制向量。由于顏色集本質(zhì)是對顏色直方圖的近似,先求出顏色直方圖再求顏色集的計算量顯得略有冗余,一般按照如下形式化方法對顏色集進行求取。顏色集的一般實現(xiàn)如下:1、對于RGB空間中任意圖像,它的每個像素可以表示為一個矢量,其中r,g,b分別代表紅、綠、藍顏色分量。2、通過變換T將其變換到另一個與人視覺一致的顏色空間,即。3、采用量化器QM對重新量化,使得視覺上明顯不同的顏色對應著不同的顏色集,并將顏色集映射成索引m。4、設BM是M維的二值空間,在BM空間的每個軸對應唯一的索引m。一個顏色集就是BM二值空間中的一個二維矢量,它對應著對顏色{m}的選擇,即顏色m出現(xiàn)時,c[m]=1,否則,c[m]=0。如果該顏色集對應一個單位長度的二值矢量,則表明重新量化后的圖像只有一個顏色出現(xiàn);如果該顏色集有多個非零值,則表明重新量化后的圖像中有多個顏色出現(xiàn)。5.1.4顏色聚合向量顏色聚合向量是在顏色直方圖基礎之上做的進一步運算,其核心思想是將屬于顏色直方圖的每個顏色量化區(qū)間的像素分為兩部分,如果該顏色區(qū)間中的某些像素所占據(jù)的連續(xù)區(qū)域面積大于指定閾值,則將該區(qū)域內(nèi)的像素作為聚合像素,否則則作為非聚合像素,表示為,其中分別代表直方圖的第個顏色量化區(qū)間中的聚合像素和非聚合像素的數(shù)量。由于顏色聚合向量除了包含顏色頻率信息,也包含了部分空間位置信息,可以獲得比顏色直方圖更好的表示效果。顏色聚合向量算法步驟如下:1、量化:顏色聚合向量算法的第一步與求普通的直方圖類似,即量化處理。一般采用均勻量化,量化的目標是使圖像中只保留個顏色區(qū)間。2、連通區(qū)域劃分:對重新量化后的像素值矩陣,根據(jù)像素間的連通性把圖像劃分成若干個連通區(qū)域。3、判斷聚合性:統(tǒng)計每一個聯(lián)通區(qū)域中的像素數(shù)目,根據(jù)設定閾值判斷該區(qū)域中的像素是聚合的還是非聚合。4、假設,分別表示第個顏色區(qū)間中聚合像素和非聚合像素的數(shù)量,則圖像的聚合向量可以表示為。5.1.5顏色相關圖顏色相關圖是圖像顏色分布的另外一種表達方式。這種特征不僅刻畫了像素在圖像中的占比,也反映了不同顏色對之間的空間位置相關性。顏色相關圖利用顏色對之間的相對距離分布來描述空間位置信息。顏色相關圖是一張用顏色對索引的表,其中的第個分量表示顏色為的像素和顏色為的像素之間的距離小于k的概率。設I表示整張圖像的全部像素,表示顏色為的所有像素。顏色相關圖可以表達為其中,表示像素和之間的距離。下面給出顏色相關圖的示例代碼:importnumpyasnp
fromskimage.dataimportcoffee
frommatplotlibimportpyplotasplt
defisValid(X,Y,point):
"""
判斷某個像素是否超出圖像空間范圍
"""
ifpoint[0]<0orpoint[0]>=X:
returnFalse
ifpoint[1]<0orpoint[1]>=Y:
returnFalse
returnTrue
defgetNeighbors(X,Y,x,y,dist):
"""
Findpixelneighborsaccordingtovariousdistances
找出滿足某種距離度量的點(x,y)的距離為dist的鄰居集合
"""
cn1=(x+dist,y+dist)
cn2=(x+dist,y)
cn3=(x+dist,y-dist)
cn4=(x,y-dist)
cn5=(x-dist,y-dist)
cn6=(x-dist,y)
cn7=(x-dist,y+dist)
cn8=(x,y+dist)
points=(cn1,cn2,cn3,cn4,cn5,cn6,cn7,cn8)
Cn=[]
foriinpoints:
ifisValid(X,Y,i):
Cn.append(i)
returnCn
defcorrlogram(image,dist):
XX,YY,tt=image.shape
cgram=np.zeros((256,256),dtype=)
forxinrange(XX):
foryinrange(YY):
fortinrange(tt):
color_i=image[x,y,t]
neighbors_i=getNeighbors(XX,YY,x,y,dist)
forjinneighbors_i:
j0=j[0]
j1=j[1]
color_j=image[j0,j1,t]
cgram[color_i,color_j]=cgram[color_i,color_j]+1
returncgram
image=coffee()
dist=4
cgram=corrlogram(image,dist)
plt.imshow(cgram)
plt.show()5.2紋理特征提取圖5-1紋理圖像示例,第一行表示人工紋理,第二行是自然紋理紋理是一種反映圖像中同質(zhì)現(xiàn)象的視覺特征,它體現(xiàn)了物體表面的具有重復性或者周期性變化的表面結構組織排列屬性。紋理具有三大特點:1、重復性:圖像可以看作是某種局部元素在全局區(qū)域的不斷重復出現(xiàn)。2、周期性:圖像中的元素并非隨機出現(xiàn),而是按照一定的周期性重復出現(xiàn)。3、同質(zhì)性:重復出現(xiàn)的元素在結構和尺寸上大致相同。由上可見紋理是某種局部序列性不斷重復、非隨機排列、在結構和尺寸上大致相同的統(tǒng)一體。典型的紋理圖像如圖5-1所示。不同于灰度、顏色等圖像特征,紋理特征通過像素及其周邊空域像素的灰度分布進行描述,也就是局部紋理信息。局部紋理的反復排布所呈現(xiàn)出的重復性,就是所謂的全局紋理信息。紋理信息在表現(xiàn)全局特征性質(zhì)的同時,也體現(xiàn)了圖像或圖像所在區(qū)域對應景物的表面特性。紋理特征只是對物體表面特性進行描述,還并不能反映物體的本質(zhì)屬性,即圖像高層語義信息。紋理特征提取過程是通過一定的圖像處理技術抽取出紋理特征,從而獲得紋理的定量或定性描述的過程。紋理特征提取基本過程:1、從像素出發(fā),找出紋理基元(即紋理圖像中辨識能力比較強的特征),并根據(jù)紋理基元的排列信息,建立起紋理基元模型。2、利用紋理基元模型對紋理圖像進行特征提取以支持對圖像的進一步分割、分類以及辨識。常見的紋理特征提取方法大致可以分為如下幾類:1、統(tǒng)計分析法:統(tǒng)計分析法又稱為基于統(tǒng)計紋理特征的檢測方法,該類方法假設紋理圖像在空間灰度分布上存在某種重復性,通過對紋理圖像的灰度空間分布進行計算從而得到紋理特征,主要包括灰度直方圖法、灰度共生矩陣法、灰度行程長度法、灰度差分統(tǒng)計、交叉對角矩陣、自相關函數(shù)法等。該類方法在木紋、沙地、草地之類的圖像分析上很有效。其主要優(yōu)勢是方法簡單、易于實現(xiàn),典型代表方法是灰度共生矩陣法,被公認為是比較有效的紋理分析方法。2、結構分析法:結構分析法認為紋理基元之間存在某種結構規(guī)則關系,該類方法首先對圖像中的紋理基元進行分離,然后基于紋理基元的特征和空間排列規(guī)則對紋理進行表征。主要包括偏心度、面積、方向等特征,其主要目標是通過圖像結構特征和排列規(guī)則的描述得到紋理特征的描述,此類算法主要適用于已知紋理基元的情況,對磚墻、纖維等紋理基元和排列規(guī)則都比較明顯的圖像分析比較有效。3、模型分析法:模型分析法基于像素及其鄰域像素之間的關系建立模型,根據(jù)不同模型提取不同特征量,進行參數(shù)估計。典型的模型分析方法包括自回歸方法、馬爾可夫條件隨機場方法以及分形方法等。4、頻譜分析法:頻譜分析方法又稱為信號處理法和濾波方法。該方法將紋理圖像從空間域變換到頻率域,然后通過計算峰值處的面積、峰值與原點的距離平方、峰值處的相位、兩個峰值間的相角差等,來獲得在空間域不易獲得的紋理特征,如周期、功率譜信息等。典型的譜分析法有二維傅立葉(變換)濾波方法、Gabor(變換)濾波變換和小波方法等。5.2.1統(tǒng)計紋理分析方法統(tǒng)計分析方法是較為常用的紋理特征描述分析方法,也是紋理圖像研究中被研究最多出現(xiàn)最早的一類方法。統(tǒng)計分析方法通過統(tǒng)計圖像的空間頻率、邊界頻率以及空間灰度依賴關系等對紋理進行描述。一般而言,細致的紋理具有高的空間頻率,例如布匹的紋理是非常細致的紋理,其紋理基元較小,出現(xiàn)頻率較高。而粗糙的紋理結構則具有較低的空間頻率,如大理石紋理一般較為粗糙,具有較大紋理基元,出現(xiàn)頻率較低。因此紋理圖像的空間頻率可以作為紋理描述的一種方式。邊界頻率是另外一種基于統(tǒng)計的紋理圖像描述方法,邊界頻率越高表明紋理越精細??臻g灰度依賴關系方法通過描述紋理結構之間的空間依賴關系來描述紋理。目前常用的統(tǒng)計紋理分析方法有,自相關函數(shù)(AutocorrelationFeatures)、邊界頻率(EdgeFrequency)、灰度共生矩陣(greylevelco-occurrencematrix(GLCM))等。統(tǒng)計分析方法并不刻意去精確描述紋理的結構。從統(tǒng)計學的角度來看,紋理圖像是一些復雜的模式,通過獲得的統(tǒng)計特征集來描述這些模式?;叶裙采仃嚕夯叶裙采仃嚪?GreyLevelCo-occurrenceMatrix,GLCM)也稱為聯(lián)合概率矩陣法。該方法基于圖像中灰度結構重復出現(xiàn)的概率來對圖像紋理特征進行描述。該方法的本質(zhì)是使用條件概率來表征紋理特征,通過對空間上具有某種位置關系的一對像素成對出現(xiàn)的概率進行統(tǒng)計得到灰度共生矩陣,然后從灰度共生矩陣中提取有意義的統(tǒng)計特征對紋理進行描述。設紋理圖像的大小,圖像灰度級為,記,,記。則可把該圖像看作到灰度值集合的一個映射。即中的每一個像素點對應一個屬于該圖像的灰度值:。設紋理圖像的像素灰度值矩陣中任意兩不同像素的灰度值分別為和,則該圖像的灰度共生矩陣定義為:沿方向,像素間隔距離為的所有像素中,灰度值分別為和的像素對共同出現(xiàn)的次數(shù),記為。一般的取0°、45°、90°和135°四個方向。分別定義如下1、0°方向2、45°方向或3、90°方向4、135°方向或其中的含義:一是表示k和m的取值范圍是,l和n的取值范圍是。二是表示和的取值范圍是待分析圖像的全部像素點坐標。三是表示且。表示的是灰度共生矩陣中的一個元素。位于灰度共生矩陣處的元素的值是待分析圖像中,沿方向、像素間隔距離為的所有像素對中,其起點像素的灰度值為i,終點像素的灰度值j為的像素對的個數(shù)。在值和值給定的情況下,有時將灰度共生矩陣簡寫,如和時,可以簡寫為。例:已知有圖像如下所示圖像,分別計算分別計算當時的灰度共生矩陣、、、。解:根據(jù)灰度共生矩陣的定義,通過統(tǒng)計和等于0°、45°、90°和135°四個方向時,圖像中的起點像素灰度值為i,末點像素灰度值為j的相鄰像素點對的個數(shù)。得到時的灰度共生矩陣時的灰度共生矩陣時的灰度共生矩陣時的灰度共生矩陣灰度共生矩陣提供了關于紋理的統(tǒng)計信息,但并不能直接作為紋理特征。在實際應用中需要基于灰度共生矩陣進一步計算出紋理圖像的特征參數(shù),也稱為二次統(tǒng)計量。利用灰度共生矩陣描述圖像紋理的統(tǒng)計量主要有14種,包括角二階矩)、對比度、熵、相關性、均勻性、逆差矩、和平均、和方差、和熵、差方差(變異差異)、差熵、局部平穩(wěn)性、相關信息測度1、相關信息測度2等。在實際應用中發(fā)現(xiàn)在灰度共生矩陣的14個紋理特征參數(shù)中,僅有能量、對比度、相關性和逆差矩這4個特征參數(shù)是不相關的,且其既便于計算又能給出較高的分類精度。設為圖像中像素距離為、方向為的灰度共生矩陣的位置上的元素值,下面給出幾種典型的灰度共生矩陣紋理特征參數(shù):1、角二階矩(能量)2、對比度3、熵4、相關性其中5、均勻性6、逆差矩Skimage圖像處理庫中給出的示例程序如下:importmatplotlib.pyplotaspltfromskimage.featureimportgreycomatrix,greycopropsfromskimageimportdataPATCH_SIZE=21#載入相機圖像image=data.camera()#選擇圖像中的草地區(qū)域塊grass_locations=[(474,291),(440,433),(466,18),(462,236)]grass_patches=[]forlocingrass_locations:grass_patches.append(image[loc[0]:loc[0]+PATCH_SIZE,loc[1]:loc[1]+PATCH_SIZE])#選擇圖像中的天空區(qū)域塊sky_locations=[(54,48),(21,233),(90,380),(195,330)]sky_patches=[]forlocinsky_locations:sky_patches.append(image[loc[0]:loc[0]+PATCH_SIZE,loc[1]:loc[1]+PATCH_SIZE])#計算每個塊中的灰度共生矩陣屬性xs=[]ys=[]forpatchin(grass_patches+sky_patches):glcm=greycomatrix(patch,[5],[0],256,symmetric=True,normed=True)xs.append(greycoprops(glcm,'dissimilarity')[0,0])ys.append(greycoprops(glcm,'correlation')[0,0])#創(chuàng)建繪圖fig=plt.figure(figsize=(8,8))#展現(xiàn)原始圖像,以及圖像塊的位置ax=fig.add_subplot(3,2,1)ax.imshow(image,cmap=plt.cm.gray,interpolation='nearest',vmin=0,vmax=255)for(y,x)ingrass_locations:ax.plot(x+PATCH_SIZE/2,y+PATCH_SIZE/2,'gs')for(y,x)insky_locations:ax.plot(x+PATCH_SIZE/2,y+PATCH_SIZE/2,'bs')ax.set_xlabel('OriginalImage')ax.set_xticks([])ax.set_yticks([])ax.axis('image')#對于每個塊,plot(dissimilarity,correlation)ax=fig.add_subplot(3,2,2)ax.plot(xs[:len(grass_patches)],ys[:len(grass_patches)],'go',label='Grass')ax.plot(xs[len(grass_patches):],ys[len(grass_patches):],'bo',label='Sky')ax.set_xlabel('GLCMDissimilarity')ax.set_ylabel('GLCMCorrelation')ax.legend()#展示圖像塊fori,patchinenumerate(grass_patches):ax=fig.add_subplot(3,len(grass_patches),len(grass_patches)*1+i+1)ax.imshow(patch,cmap=plt.cm.gray,interpolation='nearest',vmin=0,vmax=255)ax.set_xlabel('Grass%d'%(i+1))fori,patchinenumerate(sky_patches):ax=fig.add_subplot(3,len(sky_patches),len(sky_patches)*2+i+1)ax.imshow(patch,cmap=plt.cm.gray,interpolation='nearest',vmin=0,vmax=255)ax.set_xlabel('Sky%d'%(i+1))#展示圖像塊,并顯示fig.suptitle('Greylevelco-occurrencematrixfeatures',fontsize=14)plt.show()圖5-2基于灰度共生矩陣的紋理描述方法5.2.2Laws紋理能量測量法Laws的紋理能量測量法是一種典型的一階紋理分析方法,在紋理分析領域中有一定影響。
Laws紋理測量的基本思想是設置兩個窗口:一個是微窗口,可為3×3、5×5或7×7,常取5×5用來測量以像元為中心的小區(qū)域的灰度的不規(guī)則性,以形成屬性,稱為微窗口濾波;
另一個為宏窗口,為15×15或32×32,用來在更大的區(qū)域上求屬性的一階統(tǒng)計量(常為均值和標準偏差),稱之為能量變換。整個紋理分析過程為:微窗口濾波能量轉換分類Laws深入研究了濾波模板的選定。首先定義了一維濾波模板,然后通過卷積形成系列一維、二維濾波模板,用于檢測和度量紋理的結構信息。
選定的三組一維濾波模板是:L3=[121]灰度(Level)
E3=[-101]邊緣(Edge)
S3=[-12-1]點(Spot)
L5=[14641]
E5=[-1–2021]
S5=[-1020–1]
W5=[-120–21]波(Wave)
R5=[1–46–41]漣漪(Ripple)L7=[1615201561]
E7=[-1–4–50541]
S7=[-1-2141–2–1]
W7=[-1030–301]
R7=[1-2–14–1–21]
O7=[-16–1520–156–1]振蕩Oscillation)1×3的矢量集是構成更大矢量的基礎,每一個1×5的矢量可以由兩個1×3矢量的卷積產(chǎn)生。1×7的矢量可以由1×3與1×5矢量卷積產(chǎn)生。垂直矢量和水平矢量可生成二維濾波模板。由濾波模板與圖像卷積可以檢測不同的紋理能量信息。所以,Laws一般選用12到15個5×5的模板。以1×5矢量為基礎,卷積同樣維數(shù)的矢量,可獲得25個5×5模板。其中最有用的是5×5的零和模板,即,其中是模板中的元素,其中四個最強性能的的模板是:1、E5L5模板2、R5R5模板3、E5S5模板4、L5S5模板它們分別可以濾出水平邊緣、高頻點、V形狀和垂直邊緣。Laws將8種紋理圖像拼在一起,對該圖像作紋理能量測量,將每個像元指定為八個可能類中的一個,正確率達87%。
這種紋理分析方法簡單、有效。但所提供的模板較少,尚未更多地給出其變化性質(zhì),應用受到一定的限制。5.2.3Gabor變換大量心理和生理學研究發(fā)現(xiàn),在人類的低級視覺中,輸入信號被一系列具有不同頻率和方位的線性空間濾波器分解成一組頻率和方位通道,Gabor變換可以很好地描述這一信號分解過程。Gabor變換具有兩個很重要的特性:一是其良好的空間域與頻率域局部化性質(zhì);二是無論從空間域的起伏特性上,方位選擇特性上,空間域與頻率域選擇上,還是從正交相位的關系上,二維Gabor基函數(shù)具有與大多數(shù)哺乳動物的視覺表皮簡單細胞的二維感知域模型相似的性質(zhì)。我們可以借鑒人類處理信號的特性,用包含多個Gabor濾波器的濾波器組來對圖像進行不同中心頻率和方位的濾波處理,從而提取包含不同頻率成分和不同方位的特征,作為目標的非參數(shù)化特征,研究其不同分辨率目標的特征與圖像分辨率的關系。考慮到計算效率的問題,不可能在Gabor濾波器組中包含所有中心頻率的濾波器,實際應用中通常根據(jù)經(jīng)驗選取某幾個中心頻率和方位。圖5-3典型Gabor濾波器算子示意Gabor變換屬于加窗傅立葉變換,Gabor函數(shù)可以在頻域不同尺度、不同方向上提取相關的特征。另外Gabor函數(shù)與人眼的生物作用相仿,所以經(jīng)常用作紋理識別上,并取得了較好的效果。二維Gabor函數(shù)可以表示為:其中,和分別代表水平和垂直方位的空間尺度因子,和分別表示中心頻率及方位。分解該濾波器可以得到兩個實濾波器,余弦Gabor濾波器和正弦Gabor濾波器:余弦Gabor濾波器表示正弦Gabor濾波器表示為二維余弦Gabor濾波器是較為常用的圖像特征提取濾波器,通過對余弦Gabor濾波器進行傅里葉變換可得:濾波器中有四個自由參量:,因此濾波器設計的任務就是確定這四個量。由于圖像在計算機中是以離散點的形式存放的,因此為了用Gabor濾波器對其進行濾波處理,首先要將連續(xù)的Gabor濾波器采樣獲得離散的Gabor濾波器。運用Gabor濾波器對圖像進行濾波實際上就是用離散化的Gabor模板矩陣和圖像數(shù)據(jù)矩陣卷積的過程。當兩卷積矩陣很大時,運算量將會急劇增大,如果把空間域中的卷積問題轉化到頻率域中用相乘的來實現(xiàn),將大大降低運算量。設矩陣,的Fourier變化分別為,,有由卷積定理得其中表示卷積,表示傅里葉變換,表示逆傅里葉變換,表示對應元素相乘。計算流程如下圖圖5-4Gabor濾波器濾波過程在用含有多個Gabor濾波器的濾波器組進行圖像特征提取時,具有最低中心頻率需要根據(jù)目標圖像的最大尺寸確定,但是實際應用時這一尺寸不一定可以得到,此時我們可以粗略的用來代替,相應的=。使用Gabor進行紋理特征提取的示例代碼及結果如下所示。importmatplotlib.pyplotasplt
importnumpyasnp
fromscipyimportndimageasndi
fromskimageimportdata
fromskimage.utilimportimg_as_float
fromskimage.filtersimportgabor_kernel
defcompute_feats(image,kernels):
feats=np.zeros((len(kernels),2),dtype=np.double)
fork,kernelinenumerate(kernels):
filtered=ndi.convolve(image,kernel,mode='wrap')
feats[k,0]=filtered.mean()
feats[k,1]=filtered.var()
returnfeats
defmatch(feats,ref_feats):
min_error=np.inf
min_i=None
foriinrange(ref_feats.shape[0]):
error=np.sum((feats-ref_feats[i,:])**2)
iferror<min_error:
min_error=error
min_i=i
returnmin_i
#準備Gabor卷積核
kernels=[]
forthetainrange(4):
theta=theta/4.*np.pi
forsigmain(1,3):
forfrequencyin(0.05,0.25):
kernel=np.real(gabor_kernel(frequency,theta=theta,
sigma_x=sigma,sigma_y=sigma))
kernels.append(kernel)
shrink=(slice(0,None,3),slice(0,None,3))
brick=img_as_float(data.load('brick.png'))[shrink]
grass=img_as_float(data.load('grass.png'))[shrink]
wall=img_as_float(data.load('rough-wall.png'))[shrink]
image_names=('brick','grass','wall')
images=(brick,grass,wall)
#準備參考特征
ref_feats=np.zeros((3,len(kernels),2),dtype=np.double)
ref_feats[0,:,:]=compute_feats(brick,kernels)
ref_feats[1,:,:]=compute_feats(grass,kernels)
ref_feats[2,:,:]=compute_feats(wall,kernels)
print('RotatedimagesmatchedagainstreferencesusingGaborfilterbanks:')
print('original:brick,rotated:30deg,matchresult:',end='')
feats=compute_feats(ndi.rotate(brick,angle=190,reshape=False),kernels)
print(image_names[match(feats,ref_feats)])
print('original:brick,rotated:70deg,matchresult:',end='')
feats=compute_feats(ndi.rotate(brick,angle=70,reshape=False),kernels)
print(image_names[match(feats,ref_feats)])
print('original:grass,rotated:145deg,matchresult:',end='')
feats=compute_feats(ndi.rotate(grass,angle=145,reshape=False),kernels)
print(image_names[match(feats,ref_feats)])
defpower(image,kernel):
#Normalizeimagesforbettercomparison.
image=(image-image.mean())/image.std()
returnnp.sqrt(ndi.convolve(image,np.real(kernel),mode='wrap')**2+
ndi.convolve(image,np.imag(kernel),mode='wrap')**2)
#Plotaselectionofthefilterbankkernelsandtheirresponses.
results=[]
kernel_params=[]
forthetain(0,1):
theta=theta/4.*np.pi
forfrequencyin(0.1,0.4):
kernel=gabor_kernel(frequency,theta=theta)
params='theta=%d,\nfrequency=%.2f'%(theta*180/np.pi,frequency)
kernel_params.append(params)
#Savekernelandthepowerimageforeachimage
results.append((kernel,[power(img,kernel)forimginimages]))
fig,axes=plt.subplots(nrows=5,ncols=4,figsize=(5,6))
plt.gray()
#fig.suptitle('ImageresponsesforGaborfilterkernels',fontsize=12)
axes[0][0].axis('off')
#Plotoriginalimages
forlabel,img,axinzip(image_names,images,axes[0][1:]):
ax.imshow(img)
ax.set_title(label,fontsize=9)
ax.axis('off')
forlabel,(kernel,powers),ax_rowinzip(kernel_params,results,axes[1:]):
#PlotGaborkernel
ax=ax_row[0]
ax.imshow(np.real(kernel),interpolation='nearest')
ax.set_ylabel(label,fontsize=7)
ax.set_xticks([])
ax.set_yticks([])
#PlotGaborresponseswiththecontrastnormalizedforeachfilter
vmin=np.min(powers)
vmax=np.max(powers)
forpatch,axinzip(powers,ax_row[1:]):
ax.imshow(patch,vmin=vmin,vmax=vmax)
ax.axis('off')
plt.show()圖5-5基于Gabor濾波器的紋理特征提取5.2.4局部二值模式LBP局部二值模式(localbinarypattern,LBP)基本思想是將中心像素點的灰度值作為閾值,將其鄰域內(nèi)的像素點灰度值與閾值做比較,從而得到二進制編碼用以表述局部紋理特征。LBP表示方法不易受圖像整體灰度線性變化的影響,當圖像的灰度值發(fā)生線性均勻變化時,其LBP特征編碼是不變的。LBP特征計算簡單,表征能力強,在紋理特征描述上具有較好的效果?;镜腖BP算子:3×3的矩形塊,有1個中心像素和8個鄰域像素分別對應于9個灰度值。特征值:以中心像素的灰度值為閾值,將其鄰域的8個灰度值與閾值相比較,大于中心灰度值的像素由1表示,反之由0表示。然后根據(jù)順時針方向讀出8個二進制值。經(jīng)閾值化后的二值矩陣可看成一個二值紋理模式,用來刻畫鄰域內(nèi)像素點的灰度相對中心點的變化情況。因為人類視覺系統(tǒng)對紋理的感知與平均灰度(亮度)無關,而局部二值模式方法注重像素灰度的變化,所以它符合人類視覺對圖像紋理的感知特點。計算過程如圖5-6所示:圖5-6LBP計算過程使用LBP方法提取某個圖像的紋理特征的代碼及結果如下:importskimage.featureimportskimage.segmentationimportmatplotlib.pyplotaspltfromskimage.dataimportcoffeeimg=coffee()forcolour_channelin(0,1,2):img[:,:,colour_channel]=skimage.feature.local_binary_pattern(img[:,:,colour_channel],8,1.0,method='var')plt.imshow(img);plt.show()圖5-7基于LBP計算圖像的紋理特征使用LBP對紋理圖像進行特征提取,并使用不同LBP變種進行表示的代碼及結果如下:"""===============================================基于二值模式的圖像紋理分類==============================================="""importnumpyasnpimportmatplotlib.pyplotaspltMETHOD='uniform'plt.rcParams['font.size']=9defplot_circle(ax,center,radius,color):circle=plt.Circle(center,radius,facecolor=color,edgecolor='0.5')ax.add_patch(circle)defplot_lbp_model(ax,binary_values):"""LBP方法模型繪制."""#Geometryspectheta=np.deg2rad(45)R=1r=0.15w=1.5gray='0.5'#Drawthecentralpixel.plot_circle(ax,(0,0),radius=r,color=gray)#Drawthesurroundingpixels.fori,facecolorinenumerate(binary_values):x=R*np.cos(i*theta)y=R*np.sin(i*theta)plot_circle(ax,(x,y),radius=r,color=str(facecolor))#Drawthepixelgrid.forxinnp.linspace(-w,w,4):ax.axvline(x,color=gray)ax.axhline(x,color=gray)#Tweakthelayout.ax.axis('image')ax.axis('off')size=w+0.2ax.set_xlim(-size,size)ax.set_ylim(-size,size)fig,axes=plt.subplots(ncols=5,figsize=(7,2))titles=['flat','flat','edge','corner','non-uniform']binary_patterns=[np.zeros(8),np.ones(8),np.hstack([np.ones(4),np.zeros(4)]),np.hstack([np.zeros(3),np.ones(5)]),[1,0,0,1,1,1,0,0]]forax,values,nameinzip(axes,binary_patterns,titles):plot_lbp_model(ax,values)ax.set_title(name)#######################################################################二值模式特征提取部分fromskimage.transformimportrotatefromskimage.featureimportlocal_binary_patternfromskimageimportdatafromskimage.colorimportlabel2rgb#settingsforLBPradius=3n_points=8*radiusdefoverlay_labels(image,lbp,labels):mask=np.logical_or.reduce([lbp==eachforeachinlabels])returnlabel2rgb(mask,image=image,bg_label=0,alpha=0.5)defhighlight_bars(bars,indexes):foriinindexes:bars[i].set_facecolor('r')image=data.load('brick.png')lbp=local_binary_pattern(image,n_points,radius,METHOD)defhist(ax,lbp):n_bins=int(lbp.max()+1)returnax.hist(lbp.ravel(),normed=True,bins=n_bins,range=(0,n_bins),facecolor='0.5')#繪制LBP直方圖fig,(ax_img,ax_hist)=plt.subplots(nrows=2,ncols=3,figsize=(9,6))plt.gray()titles=('edge','flat','corner')w=width=radius-1edge_labels=range(n_points//2-w,n_points//2+w+1)flat_labels=list(range(0,w+1))+list(range(n_points-w,n_points+2))i_14=n_points//4#1/4thofthehistogrami_34=3*(n_points//4)#3/4thofthehistogramcorner_labels=(list(range(i_14-w,i_14+w+1))+list(range(i_34-w,i_34+w+1)))label_sets=(edge_labels,flat_labels,corner_labels)forax,labelsinzip(ax_img,label_sets):ax.imshow(overlay_labels(image,lbp,labels))forax,labels,nameinzip(ax_hist,label_sets,titles):counts,_,bars=hist(ax,lbp)highlight_bars(bars,labels)ax.set_ylim(top=np.max(counts[:-1]))ax.set_xlim(right=n_points+2)ax.set_title(name)ax_hist[0].set_ylabel('Percentage')foraxinax_img:ax.axis('off')#######################################################################使用LBP對圖像紋理進行分類radius=2n_points=8*radiusdefkullback_leibler_divergence(p,q):p=np.asarray(p)q=np.asarray(q)filt=np.logical_and(p!=0,q!=0)returnnp.sum(p[filt]*np.log2(p[filt]/q[filt]))defmatch(refs,img):best_score=10best_name=Nonelbp=local_binary_pattern(img,n_points,radius,METHOD)n_bins=int(lbp.max()+1)hist,_=np.histogram(lbp,density=True,bins=n_bins,range=(0,n_bins))forname,refinrefs.items():ref_hist,_=np.histogram(ref,density=True,bins=n_bins,range=(0,n_bins))score=kullback_leibler_divergence(hist,ref_hist)ifscore<best_score:best_score=scorebest_name=namereturnbest_namebrick=data.load('brick.png')grass=data.load('grass.png')wall=data.load('rough-wall.png')refs={'brick':local_binary_pattern(brick,n_points,radius,METHOD),'grass':local_binary_pattern(grass,n_points,radius,METHOD),'wall':local_binary_pattern(wall,n_points,radius,METHOD)}#對特征進行分類print('RotatedimagesmatchedagainstreferencesusingLBP:')print('original:brick,rotated:30deg,matchresult:',match(refs,rotate(brick,angle=30,resize=False)))print('original:brick,rotated:70deg,matchresult:',match(refs,rotate(brick,angle=70,resize=False)))print('original:grass,rotated:145deg,matchresult:',match(refs,rotate(grass,angle=145,resize=False)))#繪制LBP紋理直方圖fig,((ax1,ax2,ax3),(ax4,ax5,ax6))=plt.subplots(nrows=2,ncols=3,figsize=(9,6))plt.gray()ax1.imshow(brick)ax1.axis('off')hist(ax4,refs['brick'])ax4.set_ylabel('Percentage')ax2.imshow(grass)ax2.axis('off')hist(ax5,refs['grass'])ax5.set_xlabel('UniformLBPvalues')ax3.imshow(wall)ax3.axis('off')hist(ax6,refs['wall'])plt.show()圖5-8基于LBP對紋理圖像進行分類5.3圖像形狀特征提取形狀和區(qū)域特征是圖像中的另外一類重要特征。不同于顏色、紋理等底層特征,對形狀特征的描述必須以對圖像中的物體或區(qū)域對象的分割為前提基礎。形狀特征的表示方法可以分為兩類:一種是基于輪廓特征,典型方法是傅里葉描述符方法。二是基于區(qū)域特征,典型方法是形狀無關矩方法。輪廓特征中只用到了物體的邊界,而區(qū)域特征則需要考慮到整個形狀區(qū)域。我們在下文中將詳細介紹這兩類方法,另外也簡要介紹一些簡單形狀特征。5.3.1簡單形狀特征矩形度:矩形度反應物體對其外接矩形的充滿程度,用物體的面積與其最小外接矩形的面積之比來描述,即是該物體的面積,而是其外接矩形的面積。當物體為矩形時,取得最大值1.0;圓形物體的取值為;細長的、彎曲的物體的的取值變小。與矩形度相關的輔助特征為長寬比,,其中表示物體外接矩形的寬度,表示外接矩形的長度。利用長寬比可以將細長的物體與圓形或方形的物體區(qū)分開來。球狀性:球狀性(Sphericity)既可以描述二維目標也可以描述三維目標,其定義為,在描述二維目標時,表示目標區(qū)域內(nèi)切圓的半徑,表示目標區(qū)域外接圓的半徑,兩個圓的圓心都在區(qū)域的重心上,如圖5-9所示圖5-9球狀性示意圖可知的取值范圍為。當目標區(qū)域為圓形時,目標的球狀性值達到最大值1,而當目標區(qū)域為其他形狀時,則有。顯然不受區(qū)域平移、旋轉和尺度變化的影響。圓形性:目標圓形性(doularity)是指用目標區(qū)域R的所有邊界點定義的特征量,其定義式為。設為圖像邊界點坐標,為圖像的重心坐標,其中是從區(qū)域重心到邊界點的平均距離,定義,而是從區(qū)域重心到邊界點的距離均方差,定義。針對灰度圖像,區(qū)域重心可以定義為:5.3.2傅立葉描述符傅里葉描述符是用于單封閉曲線形狀特征描述的常用工具。傅立葉描述符將待描述目標曲線看作一維數(shù)值序列,使用傅里葉變換對該序列進行轉換,得到描述該曲線的一系列傅里葉系數(shù)。傅里葉描述子具有計算簡單、描述清晰等優(yōu)點。相較于其它復雜的描述方法,傅里葉描述子更加直觀,易于理解。傅里葉描述方法一般分為兩步:首先,定義對輪廓線的表示,把坐標的序列點看作復數(shù):,即x軸作為實軸,y軸作為虛軸,邊界的性質(zhì)不變。這種表示方法的優(yōu)點,是將一個二維邊緣描述問題簡化成一個一維序列描述問題。第二,對一維序列進行傅里葉變換,并求得其傅里葉系數(shù)。傅立葉描述子序列反映了原曲線的形狀特征。由于傅立葉變換具有能量集中性,少量的傅立葉描述子就可以重構出原曲線。使用Python實現(xiàn)傅里葉描述子示例代碼如下importnumpyasnp
importmatplotlib.pyplotasplt
fromskimageimportmeasure
#構建測試數(shù)據(jù)
x,y=np.ogrid[-np.pi:np.pi:100j,-np.pi:np.pi:100j]
r=np.sin(np.exp((np.sin(x)**3+np.cos(y)**2)))
#找出輪廓邊界
contours=measure.find_contours(r,0.8)
#顯示對應邊界
fig,ax=plt.subplots()
ax.imshow(r,interpolation='nearest',cmap=plt.cm.gray)
forn,contourinenumerate(contours):
ax.plot(contour[:,1],contour[:,0],linewidth=2)
ax.axis('image')
ax.set_xticks([])
ax.set_yticks([])
plt.show()
#提取傅里葉形狀描述子
contour_array=contour
contour_complex=np.empty(contour_array.shape[:-1],dtype=complex)
contour_complex.real=contour_array[:,0]
contour_complex.imag=contour_array[:,1]
fourier_result=np.fft.fft(contour_complex)
print(fourier_result.shape)5.3.3形狀無關矩由于圖像區(qū)域的某些矩對于平移、旋轉、尺度等幾何變換具有一些不變的特性,使得矩的表示方法在物體的分類與識別方面具有重要的意義。對于二元有界函數(shù)f(x,y),它的(j+k)階矩為由于j和k可取所有的非負整數(shù)值,因此可以形成了一個矩的無限集。而且,這個集合完全可以確定函數(shù)f(x,y)本身。換句話說,集合對于函數(shù)f(x,y)是惟一的,也只有f(x,y)才具有這種特定的矩集。為了描述物體的形狀,假設f(x,y)的目標物體取值為1,背景為0,即函數(shù)只反映了物體的形狀而忽略其內(nèi)部灰度級細節(jié)。參數(shù)j+k稱為矩的階。特別地,零階矩是物體的面積,即對二維離散函數(shù)f(x,y),零階矩可表示為所有的一階矩和高階矩除以,即可做到矩的值與物體的大小無關。質(zhì)心坐標與中心距:當j=1,k=0時,對二值圖像來講就是物體上所有點的x坐標的總和,類似就是物體上所有點的y坐標的總和,所以,。就是二值圖像中一個物體的質(zhì)心坐標。為了獲得矩的不變特征,往往采用中心矩以及歸一化的中心距。中心距的定義為式中和是物體的質(zhì)心。中心矩以質(zhì)心作為原點進行計算,因此,它具有位置無關性。主軸:使二階中心距從變得最小的旋轉角可以由下式得出:將x,y軸分別旋轉角得坐標軸x’和y',稱為該物體的主軸。如果物體在計算矩之前旋轉角,或相對于x',y’軸計算矩,那么計算后得出的矩具有旋轉不變性。不變矩組合:相對于主軸計算并用面積歸一化的中心距,在物體放大、平移、旋轉時保持不變。只有三階或更高階的矩經(jīng)過這樣的歸一化后不能保持不變性。對于j+k=2,3,4..的高階矩,可以定義歸一化的中心矩為:,r=((j+k)/2+1)。利用歸一化的中心距,可以獲得六個不變矩組合,這些組合對于平移、旋轉、尺度等變換都是不變的,它們是:5.4邊緣特征提取圖像邊緣具有方向和幅度兩個主要成分。沿邊緣方向移動,像素的灰度值變化速率較為平緩。而沿垂直于邊緣的方向移動,像素的灰度值變化速率則較為劇烈。這種劇烈的變化或者呈階躍狀(stepedge),或者呈屋頂狀(roofedge),分別稱為階躍狀邊緣和屋頂狀邊緣。根據(jù)邊緣的性質(zhì),一般用一階和二階導數(shù)來對其進行描述與檢測。如圖5-10所示圖5-10圖像邊緣的類型綜上,圖像中的邊緣可以通過對它們求導數(shù)來確定,而導數(shù)可利用微分算子來計算。對于數(shù)字圖像來說,通常是利用差分來近似微分。圖像邊緣檢測的基本步驟:(1)濾波。邊緣檢測主要基于導數(shù)計算,但易受噪聲影響,濾波操作主要目的是為了降低噪聲的干擾。但濾波在降低噪聲的同時也導致邊緣強度的損失。(2)增強。增強算法將局部鄰域中灰度值有顯著變化的點突出顯示,一般可通過計算梯度幅值完成。(3)檢測。有些圖像中梯度幅值較大的并不是邊緣點,需要對其進行進一步的篩選。最簡單的檢測方法是設定梯度幅值閾值。(4)定位。精確確定邊緣的位置。傳統(tǒng)邊緣檢測的流程如圖5-11所示:圖5-11圖像邊緣檢測流程5.4.1梯度邊緣檢測設為連續(xù)圖像函數(shù),和分別為方向和方向的梯度,在點處的梯度可以表示為一個矢量,并有其梯度定義:令該梯度矢量在點處的梯度幅值定義為:實際中常用兩個分量的絕對值之和來近似梯度幅值,即:或用其最大值來近似梯度幅值:梯度的方向(由梯度矢量的幅角表示)是函數(shù)f(x,y)增加最快的方向,定義
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 惠民消防知識培訓課件中心
- 促銷組合策略及運用方案
- 惡性高熱專家共識課件
- 個人年度工作方案表
- 物業(yè)春節(jié)活動布置方案
- 幼兒園體育活動計劃方案
- 下半年個人工作方案目標
- 2026屆遼寧省凌源三中化學高一第一學期期末檢測試題含解析
- 粵語進階測試題及答案
- 物理安防試題及答案
- 2025年匹克球裁判試題及答案
- 2025規(guī)范家居裝修協(xié)議
- 2025年廣西繼續(xù)教育公需科目考試試題及答案貫徹創(chuàng)新驅動發(fā)展戰(zhàn)略打造
- 《初中必讀名著導讀:《水滸傳》核心知識點與深度解讀》
- “安全生產(chǎn)責任制”培訓試題及答案
- 地調(diào)考試試題及答案2025
- 診斷學血管檢查
- 2025年兵團職工考試試題及答案
- 石油天然氣建設公司HSE費用財務管理實施細則及會計核算辦法
- MAU控制邏輯檢討
- AB股有限公司章程律師版
評論
0/150
提交評論