图像处理与Python实现(岳亚伟)笔记五——图像特征提取
圖像特征是指可以對圖像的特點或內容進行表征的一系列屬性的集合,主要包括圖像自然特征(如亮度,色彩,紋理等)和圖像人為特征(如圖像頻譜,圖像直方圖等)。圖像特征提取可以視為廣義上的圖像變換,即將圖像從原始屬性空間轉化到特征屬性空間。圖像特征提取過程是指對圖像包含的信息進行處理和分析,并將其中不易受隨機因素干擾的信息作為圖像的特征提取出來,進而實現將圖像的原始特征表示為一組具有明顯的物理意義或統計意義的特征。良好的圖像特征通常應具有以下3個特點。
1,代表性或可區分性
圖像特征應能夠對該類別的對象進行高效表達。不同類別的對象之間的特征差異越大越好,以滿足相應任務的需求。如在區分乒乓球和足球時,紋理特征就是一個不錯的特征,再比如,進行圖像分割時,圖像中的邊緣突變就是一個很好的特征,因為其可以明確表示圖像的內容發生了改變。
2,穩定性
同一類別圖像的特征應該具有類似的特征值,以保證類別內圖像的相似度大于類別間圖像的相似度。如在區分成熟的蘋果和不成熟的蘋果時,顏色是一個比較好的特征,尺寸大小這個特征在區分蘋果成熟與否時,不是一個穩定的特征。
3,獨立性
圖像特征應該彼此獨立,盡量減少彼此的關聯性,因為圖像特征之間的關聯性較強會影響圖像內容的較好表達。如蘋果的直徑和蘋果的重量就屬于關聯性較強的兩個特征,因為他們都可以反映蘋果的大小,因此同時使用大小和重量這兩個特征就會顯得冗余。
圖像特征提取可以分為底層特征提取和高層語義特征提取。高層語義特征提取通常關注語義層次的特征,如識別任務中的人類識別、圖像分類等。底層特征提取通常關注圖像的顏色、紋理、形狀等一般特征。底層特征提取很少關注圖像的語義信息,通過底層特征提取獲得的信息一般比較普遍。高層語義特征提取則通常需要關聯語義,如人臉識別中很多語義特征與人臉的部件相關,這能夠反應圖像中是否存在某類對象。高層語義特征提取以底層特征提取為基礎,輔以模式識別等方法,建立語義關聯,進而形成語義特征。深度學習的出現為特征提取提供了新的思路,實現了底層特征提取和高層語義關聯間的很好銜接,極大程度地提升了圖像語義分析的效果。
圖像特征提取根據其相對尺度可分為全局特征提取和局部特征提取兩類。全局特征提取關注圖像的整體表征。常見的全局特征包括顏色特征、紋理特征、形狀特征、空間位置關系特征等。局部特征提取關注圖像的某個局部區域的特殊性質。一幅圖像中往往包含若干興趣區域,從這些區域中可以提取數量不等的若干個局部特征。和全局特征提取過程相比,局部特征提取過程首先須確定要描述的興趣區域,然后再對興趣區域進行特征描述。
一,圖像顏色特征提取
顏色特征是比較簡單但是應用較廣泛的一種視覺特征。顏色特征往往和圖像中包含的對象或場景相關。 與其他圖像特征相比,顏色特征對圖像的尺寸、方向、視角變化的依賴性較小,即相對于圖像的尺寸、方向、視角變化具有較好的健壯性。顏色特征是一種全局特征,能夠描述圖像或圖像區域對應的景物的表面性質。目前使用的顏色特征主要包括顏色直方圖、顏色矩、顏色集、顏色聚合向量以及顏色相關圖。
1.1 顏色直方圖
顏色直方圖用于描述圖像中像素顏色的數值分布情況,可以反映圖像顏色的統計分布和圖像的基本色調。顏色直方圖僅可表征圖像中某一顏色值出現的頻數,無法描述圖像像素分布的空間位置信息。任意一幅圖像都能唯一給出一幅與它對應的顏色直方圖,但不同的圖像可能有相同的顏色直方圖,因此直方圖與圖像存在一對多的關系。如將圖像劃分為若干個子區域,所有子區域的顏色直方圖之和等于全圖的顏色直方圖。一般情況下,由于圖像上的背景和前景物體的顏色分布明顯不同,顏色直方圖上會出現雙峰,但背景和前景物體顏色較為接近的圖像的顏色直方圖不具有這一特性。顏色直方圖主要包括一般顏色直方圖,全局累加直方圖,主色調直方圖
1,一般顏色直方圖
假設$s(x_i)$為圖像F中某一特定顏色$x_i$(其中i=1,2,...,n,表示顏色量化級數,$x_i$表示量化級數i對應的顏色值)的像素個數,圖像F中像素總數為$N=sum_{j}s(x_j)$,則$x_i$像素出現的頻率為:。整個圖像F的一般顏色直方圖可以表示為$H(F)=[h(x_1), h(x_2),...,h(x_n)]$。其中n表示某類顏色取值的個數,一般顏色直方圖所在的顏色空間可以是RGB顏色空間,也可以是HSV顏色空間、LUV顏色空間或LAB顏色空間。
圖1,彩色圖像的一般顏色直方圖
使用skimage中exposure模塊的histogram()函數可以求得圖像的一般顏色直方圖。一般顏色直方圖對圖像的旋轉、小幅平移、小幅縮放等變換不敏感,對圖像質量的變化(增加噪聲)也不敏感,所以一般顏色直方圖法適用于對難以進行語義分割的圖像和無需考慮物體空間位置的圖像進行描述。
另外,計算機的固有量化機制導致一般顏色直方圖法會忽略顏色見的相似性。因此,在一般顏色直方圖法被提出后,很多學者從這一點入手對該方法進行改進,獲得了如全局累加直方圖法和局部累加直方圖法等算法。
2,全局累加直方圖
當圖像中的顏色值不能取遍所有可能的顏色值時,一般顏色直方圖中就會出現一些零值。這些零值的出現會影響相似性的度量,進而會使計算出的相似度不能準確反映圖像之間的顏色分布差異。為了彌合一般顏色直方圖法的上述缺陷,在一般直方圖方法的基礎之上,通過對直方圖元素進行累加,消除零值影響,形成全局累加直方圖。
假設圖像F中某一特征的一般顏色直方圖為$H(F)=[h(x_1), h(x_2),...,h(x_n)]$,令:$lambda (x_i)=sum_{jleqslant i}h(x_j)$ 表示顏色小于或等于$x_i$的所有元素的一般顏色直方圖的累加和,則圖像F的該類特征累加直方圖可以表示為:$lambda (F)=[lambda (x_1), lambda (x_2),...,lambda (x_n)]$。
顏色相鄰的頻數在全局累加直方圖中的位置也相鄰。通過累加直方圖可以消除零值的問題。同全局直方圖相比,雖然全局累加直方圖所需的存儲量和計算量都有一定程度的增加,但是全局累加直方圖法解決了一般顏色直方圖法中的靈芝問題,也彌補了全局直方圖量化過細導致的度量效果下降的缺陷。
3,主色調直方圖
在一幅圖像中,不同顏色值出現的概率不盡相同,且通常情況下少數幾種顏色就能涵蓋整幅圖像的主色調。基于該思想,主色調直方圖法會計算出圖像中每種顏色出現的頻率,選擇出現頻率最高的幾種顏色并將其作為主色調。使用主色調直方圖并不會降低顏色直方圖匹配的效果,反而會抑制圖像非主要成分的噪聲,降低噪聲對圖像匹配的影響。
通過總結上述內容可知顏色直方圖的優點和缺點如下:優點:計算簡單那,對圖像的平移和旋轉不敏感,能簡單描述圖像中顏色的全局分布情況。缺點:無法捕捉(會丟失)顏色組成之間的空間位置關系。
1.2 顏色矩
矩是非常重要的統計量,用于表征數據分布的特點。在統計中,一階矩表示數據分布的均值,二階矩表示數據分布的方差,三階矩表示數據分布的偏移度。圖像的顏色矩用于對圖像內的顏色分布進行表征,是比較重要的一種全局圖像特征表示。數字圖像中顏色分布的統計信息主要集中在低階矩中。圖像的顏色矩特征提取時主要瞄準圖像顏色矩中的一階矩、二階矩和三階矩,對于圖像而言,這三種統計特征已經足以表達數字圖像的顏色分布。相對于顏色直方圖特征提取,顏色矩特征提取的優點是無需對顏色特征進行提前量化。
對于數字圖像P,其一階顏色矩定義為:$u_i=frac{1}{N} sum_{j=1}^{N}P_{ij}$。其中$P_{ij}$表示數字圖像P的第i個顏色通道的第j個像素的像素值,N表示圖像中像素的個數。
二階顏色矩定義為:$sigma _{i}=left [ frac{1}{N}sum_{j=1}^{N}(P_{ij}-u_i)^2 ight ]^frac{1}{2}$
三階顏色矩定義為:$S_{i}=left [ frac{1}{N}sum_{j=1}^{N}(P_{ij}-u_i)^3 ight ]^frac{1}{3}$
其中一階矩可以表征改顏色通道的平均響應強度,二階矩可以表示改顏色通道的響應方差,三階矩可以表征該顏色通道數據分布的偏移度。針對彩色圖像,圖像的顏色矩一共有9個分量,每個顏色通道均有3個低階矩。顏色矩僅使用少數幾個矩容易導致過多錯誤檢出,因為其通常和其他的特征配合使用。
for k in range(image.shape[2]) # 遍歷圖像RGB三個通道
mu = np.mean(image[:, :, k]) # 一階矩,均值
delta = np.std(image[:, :, k]) #二階矩,方差
skew = np.mean(stats.skew(image[:, :, k])) #三階矩
顏色矩的特點:圖形的顏色矩有9個分量(3個顏色通道,每個通道上3個低階矩);與其他顏色特征相比非常簡潔;分辨力較弱;顏色矩一般和其他特征結合使用,可以起到縮小范圍的作用。
1.3 顏色集(看不懂)
顏色集又可以稱為顏色索引集,其是對圖像顏色直方圖的一種近似。顏色集方法的步驟是:第一,將圖像從RGB顏色空間轉換到HSV顏色空間等均衡的顏色空間,并將顏色空間量化為若干個邊長均等的小立方體;第二,使用基于色彩的自動分割技術將圖像劃分為若干個子區域;第三,使用顏色量化空間中的某個顏色分類索引每個子區域,以將圖像表示為一個二進制的顏色索引集。
最簡單的顏色集可以通過在顏色直方圖的基礎上設置閾值形成。如給定某一顏色值m,給定其閾值$ au _{m}$,由顏色直方圖生成顏色集c可表示為:
其中$h[m]$表示直方圖中顏色值為m對應的位置處的分量。由此可見,顏色集可以表示為一個二進制向量。由于顏色集本質上是對顏色直方圖的近似表示,先求顏色直方圖,再求顏色集會略顯冗余,因此通常按照如下所示的形式化方法求顏色集。
1,像素矢量表示:對于RGB空間中的任意圖像,它的每個像素均可表示為一個矢量$overrightarrow{v_c}=(r,g,b)$,其中r,g,b分別代表紅、綠、藍顏色分量
2,顏色空間轉換:通過變換運算T將圖像變換到一個與人視覺一致的空間$overrightarrow{w_c}$,即$overrightarrow{w_c} = T(overrightarrow{v_c})$
3,顏色集索引:采用量化器(QM)對$overrightarrow{w_c}$重新量化,使得視覺明顯不同的顏色對應不同的顏色集,并將顏色集映射成索引m。
4,顏色集表示:設BM是M維德二值空間,在該空間中每個軸對應唯一的索引m。一個顏色集就是BM二值空間中的一個二維矢量,它表示對顏色{m}的選擇,即顏色m出現時,c[m]=1,否則c[m]=0
如果某顏色集對應一個單位長度的二值矢量,則表明重新量化后的圖像中只有一個顏色出現;如果該顏色集有多個非零值,則表明重新量化后的圖像中有多個顏色出現。
1.4 顏色聚合向量(不想看)
1.5 顏色相關圖(不想看)
二, 圖像紋理特征提取
紋理是一種反映圖像中同質現象的視覺特征,它體現了物體表面的具有重復性或者周期性變化的表面結構組織排列屬性。紋理具有三大特點:重復性、周期性、同質性。
重復性:圖像可以看作是某種局部元素在全局區域的不斷重復出現
周期性:圖像中的元素并非隨機出現,而是按照一定的周期性重復出現
同質性:重復出現的元素在結構和尺寸上大致相同
由上可見,紋理是某種局部序列性不斷重復、非隨機排列、在結構和尺寸上大致相同的統一體。紋理圖像示例如圖2所示,圖中第一行表示人工紋理,第二行是自然紋理
圖2,紋理圖像示例
不同于灰度、顏色等圖像特征,紋理特征通過像素及其周邊空間域像素的灰度分布進行描述,也就是局部紋理信息。局部紋理的反復排布呈現出的重復性,就是所謂的全局紋理信息。紋理信息在表現全局特征性質的同時,也體現了圖像或圖像所在區域對應景物的表面特性。紋理特征只是對物體表面特征進行描述,并不能反映物體的本質屬性,即圖像高層語義信息。
紋理特征提取過程是通過一定的圖像處理技術抽取出紋理特征,從而獲得紋理的定量或定性描述的過程。紋理特征提取的基本過程如下:
紋理基元建模:從像素出發,找出紋理基元(即紋理圖像中辨識能力比較強的特征),并根據紋理基元的排列信息建立起紋理基元模型。
整體紋理模型構建:利用紋理基元模型對紋理圖像進行特征提取,以支持對圖像的進一步分割、分類以及辨識,形成圖像整體紋理模型。
常見的紋理特征提取方法大致可以分為如下4類:
1,統計分析法
統計分析法又稱為基于統計紋理特征的檢測方法,該類方法假設紋理圖像在空間灰度分布上存在某種重復性,通過對紋理圖像的灰度圖像分布進行計算,從而得到紋理特征,主要包括灰度直方圖法、灰度共生矩陣法、灰度形成長度法、灰度差分統計、交叉對角矩陣、自相關函數法等。該類方法在木紋、沙地草地之類的圖像分析上很有效。其主要優勢是:方法簡單、易于實現,典型的代表方法是灰度共生矩陣法,被公認為是比較有效的紋理分析方法。
2,結構分析法
結構分析法認為紋理基元之間存在某正結構規則關系,該類方法首先對圖像中的紋理基元進行分離,然后基于紋理妓院的特征和空間排列規則對紋理進行表征,主要包括偏心度、面積、方向等特征,其主要目標是通過圖像結構特征和排列規則的描述得到紋理特征的描述,此類算法主要適用于已知紋理基元的情況,對磚墻、纖維等紋理基元和排列規則都比較明顯的圖像分析比較有效。
3,模型分析法
模型分析法基于像素及其鄰域像素之間的關系建立模型,根據不同模型提取不同特征量,進行參數估計。典型的模型分析法包括自回歸法,馬爾可夫條件隨機場法以及分形法等。
4,頻譜分析法
頻譜分析法又稱為信號處理法和濾波方法。該方法將紋理圖像從空間域變換到頻域,然后通過計算峰值出的面積、峰值與遠點的距離平方,峰值處的相位,兩個峰值間的相角差等,獲得在空間域不易獲得的紋理特征,如周期,功率譜信息等。典型的頻譜分析法有二維傅里葉(變換)濾波方法,Gabor(變換)濾波和小波方法等。
2.1 統計紋理分析方法
統計紋理分析方法是較常用的紋理特征描述分析方法,也是紋理圖像研究中被研究最多、出現最早的一類方法。統計紋理分析法通過統計圖像的空間頻率、邊界頻率以及空間灰度依賴關系等對紋理進行描述。
一般而言,細致的紋理具有高的空間頻率。例如,布匹的紋理是非常細致的紋理,其紋理基元較小,出現頻率較高。而粗糙的紋理結構則具有較低的空間頻率,如大理石紋理一般比較粗糙,具有較大的紋理基元,出現頻率較低。因此,紋理圖像的空間頻率可以作為紋理描述的一種方式。邊界頻率是另外一種基于統計的額紋理圖像描述方法,邊界頻率越高,表明紋理越精細。空間灰度依賴關系方法通過描述紋理結構之間的空間依賴關系描述紋理。
目前常用的統計紋理方法有自相關函數、邊界頻率、灰度共生矩陣等。統計紋理分析方法并不刻意精確描述紋理的結構。從統計學的角度看,紋理圖象是一些復雜的模式,通常通過獲得的統計特征集描述這些模式。
灰度共生矩陣法也稱為聯合概率矩陣法。該方法基于圖像中灰度結構重復出現的概率對圖像紋理特征進行描述。該方法的本質是使用條件概率表征紋理特征,通過對空間上具有某種位置關系的一對像素成對出現的概率進行統計,得到灰度共生矩陣,然后從灰度共生矩陣中提取有意義的統計特征對紋理進行描述。
設紋理圖像的大小為$M imes N$,圖像灰度級為L,記$L_x={0,1,...,M-1}, L_y={0,1,...,N-1}, G={0,1,...,L-1}$,則可把該圖像f看作$L_x imes L_y$到灰度值集合G的一個映射,即$L_x imes L_y$中的每個像素點對應一個屬于該圖像f的灰度值:$f(L_x imes L_y)--->G$。設紋理圖像的像素灰度值矩陣中任意兩個不同像素的灰度值分別為i和j,則該圖像的灰度共生矩陣定義為:沿$Theta$方向,像素間隔距離為d的所有像素中,灰度分別為i和j的像素對共同出現的次數記為$P(i,j,d,Theta)$。一般$Theta$取$0^{circ}, 45^{circ}, 90^{circ}, 135^{circ}$ 4個方向分別定義如下:
$0^{circ}$方向:$P(i, j, d, 0^{circ})=#[(k, l), (m, n)] in [(L_x imes L_y) imes (L_x imes L_y)]$, $k-m=0, left | l-n ight |=d$
$45^{circ}$方向:$P(i, j, d, 45^{circ})=#[(k, l), (m, n)] in [(L_x imes L_y) imes(L_x imes L_y)]$, $k-m=d, l-n=-d 或 k-m=-d, l-n=d$
$90^{circ}$方向:$P(i, j, d, 90^{circ})=#[(k, l), (m, n)] in [(L_x imes L_y) imes(L_x imes L_y)]$, $left | k-m ight |=d, l-n=0$
$135^{circ}$方向:$P(i, j, d, 135^{circ})=#[(k, l), (m, n)] in [(L_x imes L_y) imes(L_x imes L_y)]$, $k-m=d, l-n=d 或 k-m=-d, l-n=-d$
其中$[(k, l), (m, n)] in [(L_x imes L_y) imes(L_x imes L_y)]$的含義:一是表示k和m的取值范圍是$L_x$,l和n的取值范圍是$L_y$;二是表示(k, l)和(m,n)的取值范圍是待分析圖像的全部像素點坐標;三是表示$f(k,l)=i$且$f(m,n)=j$
$#(i,j)$表示的是灰度共生矩陣中的一個元素。位于灰度共生矩陣(i,j)處的元素$#(i,j)$的值是待分析圖像中沿方向$Theta $像素間隔距離為d的所有像素對中,其起點像素灰度值為i,重點像素的灰度值為j的像素對的個數。
在d值和$Theta $值給定的情況下,有時將灰度共生矩陣$P(i, j, d, Theta )$進行簡寫,如$d=1$和$Theta = 0^{circ }$時,可以簡寫為$P(1, 0^{circ })$。
例如:已知有圖像如下所示,分別計算當d=1時的灰度共生矩陣$P(1, 0^{circ})$、$P(1, 45^{circ})$、$P(1, 90^{circ})$、$P(1, 135^{circ})$
解:根據灰度共生矩陣的定義,通過統計d=1和$Theta $等于$0^{circ }, 45^{circ }, 90^{circ }, 135^{circ }$ 4個方向時,圖像中的起點像素灰度值為i,終點像素灰度值為j的相鄰像素點對的個數,得到$P(1, 0^{circ})$、$P(1, 45^{circ})$、$P(1, 90^{circ})$、$P(1, 135^{circ})$結果如下:
灰度共生矩陣提供了關于紋理的統計信息,但并不能直接作為紋理特征。實際應用中需要基于灰度共生矩陣進一步計算出紋理圖像的特征參數,也稱為二次統計量。
利用灰度共生矩陣描述圖像紋理的統計量主要有14種,包括角二階矩(能量)、對比度、熵、相關性、均勻性、逆差矩、和平均、和方差、和熵、差方差(變異差異)、差熵、局部平穩性、相關信息測度1、相關信息測度2.實際應用中發現,在灰度共生矩陣的14個紋理特征參數中僅有能量、對比度、相關性和逆差矩這4個特征參數是不相關的,且其既便于計算,又能給出較高的分類精度。設$P(i,j,d,Theta)$為圖像中像素距離為d、方向為$Theta $的灰度共生矩陣的(i, j)位置上的元素值,下面給出幾種典型的灰度共生矩陣紋理特征參數。
1,角二階矩(能量)
2,對比度
3,熵
4,相關性
6,逆差矩
圖3,基于灰度共生矩陣的紋理描述方法(更新了下anaconda包,咋連camera的圖像都換了T_T)
2.2 Laws紋理能量測量法
Laws紋理能量測量法是一種典型的一階紋理分析方法,在紋理分析領域中有一定影響。Laws紋理能量測量的基本思想是設置兩個窗口:一個是微窗口,可為$3 imes 3, 5 imes 5$或$7 imes 7$,常取$5 imes 5$測量以像元為中心的小區域的灰度的不規則形,以形成屬性,稱為微窗口濾波;另一個是宏窗口,為$15 imes 15$或$32 imes 32$,用來在更大的區域上求屬性的一階統計量(常為均值和標準偏差),稱為能量變換。整個紋理分析過程為:
f(x,y)--->微窗口濾波--->F(x, y)--->能量轉換--->E(x,y)--->分類
Laws紋理能量測量法首先定義了一維濾波模板,然后通過卷積形成系列一維、二維濾波模板,用于檢測和度量紋理的結構信息。選定的3組一維濾波模板是:
| L3 = [1 2 1] 灰度(Level) | R5 = [1 -4 6 -4 1]漣漪(Ripple) |
| E3 = [-1 0 1]邊緣(Edge) | L7 = [1 6 15 20 15 6 1] |
| S3 = [-1 2 -1]點(spot) | E7 = [-1 -4 -5 0 5 4 1] |
| L5 = [1 4 6 4 1] | S7 = [-1 -2 1 4 1 -2 1] |
| E5 = [-1 -2 0 2 1] | W7 = [-1 0 3 0 -3 0 1] |
| S5 = [-1 0 2 0 -1] | R7 = [1 -2 -1 4 -1 -2 1] |
| W5 = [-1 2 0 -2 1]波(Wave) | O7 = [-1 6 -15 20 -15 6 1]振蕩(Oscillation) |
$1 imes 3$的矢量集是構成更大矢量的基礎,每個$1 imes 5$的矢量可以由兩個$1 imes 3$矢量的卷積產生。$1 imes 7$的矢量可以由$1 imes 3矢量與1 imes5$矢量的卷積產生。垂直矢量和水平矢量可生成二維濾波模板。由濾波模板與圖像卷積可以檢測不同的紋理能量信息。所以,Laws紋理能量檢測法一般選用12~15個$5 imes 5$的模板。以$1 imes 5$矢量為基礎,卷積同樣維數的矢量,可獲得25個$5 imes 5$模板。其中4個最強性能的模板是E5L5模板,R5R5模板,E5S5模板,L5S5模板。
|
E5L5模板 |
R5R5模板 |
E5S5模板 |
L5S5模板 |
利用上述模板可以分別濾出水平邊緣、高頻點、V形狀和垂直邊緣。采用Laws紋理能量測量法將8種紋理圖像拼在一起,對該圖像做紋理能量測量,將每個像元指定為8個可能類中的一個,正確率達87%。這種紋理分析方法簡單、有效,但所提供的模板覺少,尚未更多地給出其變化性質,應用收到一定限制。
2.3 Gabor變換
大量心理和生理學研究發現,在人類的低級視覺中,輸入信號被一系列具有不同頻率和方位的線性空間濾波器分解成一組頻率和方位通道,Gabor變換可以很好的描述這一信號分解過程。Gabor變換具有兩個很重要的性質:一是其良好的空間域與頻域局部化性質;二是無論從空間域的起伏特性上,方位選擇上,空間域與頻域選擇上,還是從正交相位的關系上,二維Gabor基函數具有與大多數哺乳動物的視覺表皮簡單細胞的二維感知域模型相似的性質。
我們可以借鑒人類處理信號的特性,用包含多個Gabor濾波器的濾波器組對圖像進行不同中心頻率和方位的濾波處理,從而提取包含不同頻率成分和不同方位的特征,作為目標的非參數化特征,研究其不同分辨率目標的特征與圖像分辨率的關系。考慮到計算效率的問題,不可能在Gabor濾波器組中包含所有中心頻率的濾波器,實際應用中通常根據經驗選取某幾個中心頻率和方位。
Gabor變換屬于加窗傅里葉變換。Gabor函數可以在頻域不同尺度、不同方向上提取相關的特征。另外,Gabor函數與人眼的生物作用相仿,所以經常用作紋理識別上,并取得了較好的效果。二維Gabor函數可以表示為:
其中$sigma _x, sigma _y$分別代表水平和垂直方位的空間尺度因子,$w_f$和$Theta _f$分別表示中心頻率及方位。分解該濾波器可以得到兩個實濾波器:余弦Gabor濾波器和正弦Gabor濾波器。
余弦Gabor濾波器表示為:
正弦Gabor濾波器表示為:
二維余弦Gabor濾波器是較常用的圖像特征提取濾波器,通過對余弦Gabor濾波器進行傅里葉變換,可得
由于圖像在計算機中是以離散點的形式存放的,因此為了用Gabor濾波器對其進行濾波處理,首先要將連續的Gabor濾波器采樣獲得離散的Gabor濾波器。運用Gabor濾波器對圖像進行濾波,實際上就是用離散化的Gabor模板矩陣和圖像數據卷積的過程。當兩卷積矩陣很大時,運算量將會急劇增大,如果把空間域中的卷積問題轉化到頻域中通過相乘來實現,將大大降低運算量。設矩陣$f_1, f_2$的傅里葉變換分別為$F_1, F_2$,則有:$F_1=fft(f_1), F2=fft(f_2)$
由卷積定理得:$conv(f_1, f_2) = ifft(F_1 imes F_2)$,其中conv表示卷積,fft表示傅里葉變換,ifft表示逆傅里葉變換,$F_1 imes F_2$表示對應元素相乘,Gabor濾波器濾波過程如圖4所示
圖4, Gabor濾波器濾波過程(個人理解:延拓對應CNN中的padding)
在用含有多個Gabor濾波器的濾波器組進行圖像特征提取時,具有最低中心頻率需要根據目標圖像的最大尺寸I確定,但是實際應用中這一尺寸不一定能夠被獲得,此時可以粗略的用$sqrt{w_2 + h^2}$代替I,相應的$w_{f_{min}}=frac{1}{sqrt{w_2+h_2}}$.
基于Gabor的紋理特征提取如圖5:
圖5, 基于Gabor濾波器的紋理特征提取
2.4 局部二值模式
局部二值模式(Local Binary Pattern, LBP)的基本思想是將中心像素點的灰度值作為閾值,將其鄰域內的像素點灰度值與閾值進行比較,從而得到二進制編碼用以表述局部紋理特征。LBP表示方法不易受圖像整體灰度線性變化的影響,當圖像的灰度值發生先行均勻變化時,其LBP特征編碼是不變的。LBP特征計算簡單,表征能力強,在紋理特征描述上具有較好的效果。
基本LBP算子:$3 imes 3$的矩形塊,有1個中心像素和8個鄰域像素分別對應9個灰度值特征值:以中心像素的灰度值為閾值,將其鄰域的8個灰度值與閾值比較,大于中心灰度值的像素用1表示,反之用0表示。然后根據順時針方向讀出8個二進制值。經閾值化后的二值矩陣可看程一個二值紋理模式,用來刻畫鄰域內像素點的灰度相對中心點的變化情況。因為人類視覺系統對紋理的感知與平均灰度(亮度)無關,而局部二值模式方法注重像素灰度的變化,所以它符合人類視覺對圖像紋理的感知特點,LBP計算過程如圖6所示
圖6, LBP計算過程
基于LBP計算圖像的紋理特征如圖7所示。
圖7, 基于LBP計算圖像的紋理特征
三,圖像形狀特征提取
形狀和區域特征是圖像中的另外一類重要特征。不同于顏色、紋理等底層特征,對形狀特征的描述必須以對圖像中的物體或區域對象的分割為前提。形狀特征的表示方法可以分為兩類:一是基于輪廓特征,典型方法是傅里葉描述方法;二是基于區域特征,典型方法是形狀無關矩方法。輪廓特征中只用到物體的邊界,而區域特征則需要考慮到整個形狀區域。
3.1 簡單形狀特征
3.1.1 矩形度
矩形度反應物體對其外接矩形的充滿程度,用物體的面積與其最小外接矩形的面積之比描述,即:$R = frac{A_0}{A_{MER}}$,$A_0$是該物體的面積,而$A_{MER}$是其外接矩形的面積。當物體為矩形時,R取得最大值1.0;圓形物體的R取值為$pi/4$;細長的、彎曲的物體的R的取值變小。
與矩形度相關的輔助特征為長寬比,$r = frac{W_{MER}}{L_{MER}}$,其中$W_{MER}$表示物體外接矩形的寬度,$L_{MER}$表示外接矩形的長度。利用長寬比可以將西昌的物體與原型或放行的物體區分開。
3.1.2 球狀性
球狀性(Sphericity)既可以描述二維目標,也可以描述三維目標,其定義為$S=frac{r_i}{r_c}$,描述二維目標時,$r_i$表示目標區域內切圓的半徑,$r_c$表示目標區域外接圓的半徑,兩個圓的圓心都在區域的重心上,如圖8所示
圖8,球狀性示意圖
可知S的取值范圍為$0<Sleqslant 1$。當目標區域為圓形時,目標的球狀性值S達到最大值1,當目標區域為其他形狀時,S<1。顯然,S不受區域平移、旋轉和尺度變化的影響。
3.1.3 圓形性
目標圓形性(Doularity)是指用目標區域R的所有邊界點定義的特征量,其定義式為$C=frac{mu _R}{sigma _R}$。設$(x_i, y_i)$為圖像邊界點坐標,(x,y)為圖像的重心坐標,其中$mu_R$是從區域重心到邊界點$(x_i,y_i)$的平均距離,定義$mu_R = frac{1}{K} sum_{i=0}^{K-1}|(x_i, y_i) - (overline{x}, overline{y})|$。而$sigma_R$是從區域重心到邊界點的距離均方差,定義$sigma_R = frac{1}{K} sum_{i=0}^{K-1}[|(x_i, y_i) - (overline{x}, overline{y})| - mu_R]^2$。
針對灰度圖像,區域重心可以定義為:
3.2 傅里葉描述符
傅里葉描述符是用于單封閉曲線形狀特征描述的常用工具。傅里葉描述符將待描述目標曲線看作一維數值序列,使用傅里葉變換對該序列進行轉換,得到描述該曲線的一系列傅里葉系數。傅里葉描述符具有計算簡單、描述清晰等優點。相較于其他復雜的描述方法,傅里葉描述符更加直觀,易于理解。
傅里葉描述方法一般分為兩步:首先,定義對輪廓線的表示,把坐標的序列點看作復數,即$s(k)=x(k)+jy(k)$,x軸作為實軸,y軸作為虛軸,邊界的性質不變。這種表示方法的優點是將一個二維邊緣描述問題簡化成一個一維序列描述問題。其次,對一維序列$s(k)$進行傅里葉變換,并求得其傅里葉系數:$a(u) = sum_{k=0}^{N-1}s(k)e^{-j2 pi uk/N}$。
傅里葉描述符序列${a(u)}$反映了原曲線的形狀特征。由于傅里葉變換具有能量集中性,少量的傅里葉描述符就可以重構出原曲線。
四,圖像邊緣特征提取
圖像邊緣具有方向和幅度兩個主要成分。沿邊緣方向移動,像素的灰度值變化速率較為平緩。而沿垂直于邊緣的方向移動,像素的灰度值變化速率較為劇烈。這種劇烈的變化或者呈階躍狀(step edge),或者呈屋頂狀(roof edge),分別稱為階躍狀邊緣和屋頂狀邊緣。根據邊緣的性質,一般用一階和二階導數對其進行描述與檢測,如圖9所示
圖9,圖像邊緣的類型
綜上,圖像中的邊緣可以通過對它們求導數確定,而導數可利用微分算子計算。對于數字圖像來說,通常利用差分近似微分。
圖像邊緣檢測的基本步驟如下。
1,濾波
邊緣檢測主要基于導數計算,但易受噪聲影響,濾波操作的主要目的是降低噪聲的干擾,但濾波再降低噪聲的同時也會損失邊緣強度。
2,增強
增強算法將局部鄰域中灰度值有顯著變化的點突出顯示,一般可通過計算梯度幅值完成。
3,檢測
有些圖像中梯度幅值較大的并不是邊緣點,需要對其進行進一步的篩選。最簡單的檢測方法是設定梯度幅值閾值。
4,定位
定位即精確確定邊緣的位置。傳統邊緣檢測的流程如圖10所示
圖10,傳統邊緣檢測的流程
4.1 梯度邊緣檢測
設$f(x,y)$為連續圖像函數,$G_x$和$G_y$分別為x方向和y方向的梯度,再點(x,y)處的梯度可以表示為一個矢量,并有其梯度定義:
令
該梯度矢量在點(x,y)處的梯度幅值定義為: $|G(x,y)| = sqrt{G_{x}^{2}+G_{y}^{2}}$。實際中常用兩個分量的絕對值之和近似梯度幅值,即:$|G_4(x, y)|=|G_x|+|G_y|$,或用其最大值近似梯度幅值:$|G_8(x,y)|approx max{|G_x|+|G_y|}$。
梯度的方向(由梯度矢量的幅角表示)是函數f(x,y)增加最快的方向,定義為$phi (x,y) = arctan(G_y/G_x)$。
從梯度原理出發,已經發展了許多邊緣檢測算子:
4.2 一階邊緣檢測算子
4.2.1 羅伯特算子
羅伯特邊緣檢測算子用對角線上相鄰像素之差代替梯度尋找邊緣。羅伯特算子是一個交叉算子,其在點(i, j)的梯度幅值表示為:$|G(i,j)|=|f(i,j)-f(i+1, j+1)|+|f(i+1,j)-f(i,j+1)|$。
令:$G_x=f(i,j)-f(i+1, j+1)$, $G_y=f(i+1, j)-f(i, j+1)$則梯度幅值可表示為:$|G(i, j)|=|G_x|+|G_y|$。
而$G_x和G_y$可以分別用以下局部差分算子進行計算。
可得:$R_xf(i,j)=f(i,j)-f(i+1, j+1)=G_x$,$R_yf(i, j)=f(i+1, j)-f(i, j+1)=G_y$
羅伯特邊緣檢測的步驟為:
(1)用兩個模板分別對圖像進行運算得到$R_xf$和$R_yf$,并計算$|G(i, j)|=|G_x|+|G_y|$;
(2)判別該相加結果是否大于或等于某個閾值,如果滿足條件,則將其作為結果圖像中對應模板(i, j)位置的像素值;如果不滿足條件,則給結果圖像中對應模板(i, j)位置的像素賦0值。
圖11,羅伯特算子邊緣處理
4.2.2 索貝爾算子
索貝爾算子是$3 imes 3$的,該梯度矢量在點(i, j)處的梯度幅值定義為:$|G(i, j)| = sqrt(G_{x}^{2}+G_{y}^{2})$,簡化的卷積模板表示為:$G_4(i, j)=G_x+G_y$,其中,$G_x$和$G_y$是3*3像素窗口(模板)的中心點像素在x方向和y方向上的梯度,即利用索貝爾邊緣檢測算子得到的是邊緣檢測結果圖像中與3*3模板的中心點(i,j)對應的位置處的像素值。$G_x$和$G_y$的定義如下:
其中,x方向和y方向梯度模板形式為:
索貝爾邊緣檢測的步驟為:
(1)用兩個模板分別對圖像進行計算,得出$|G(i,j)|=G_x+G_y$;
(2)判別該相加結果是否大于或等于某個閾值,如果滿足條件,則將其作為結果圖像中對應模板(i, j)位置的像素值;如果不滿足條件,則給結果圖像中對應模板(i, j)位置的像素賦0值。
圖12,基于索貝爾算子的邊緣檢測
注意,在實現過程中,索貝爾算子又可以分為垂直方向索貝爾算子Sobel_V以及水平方向索貝爾算子Sobel_H,分別可以對垂直方向和水平方向的邊緣進行檢測,形成類似圖12所示的浮雕效果。
索貝爾邊緣檢測算子在較好地獲得邊緣效果的同時,并對噪聲具有一定的平滑作用,減小了對噪聲的敏感性。但索貝爾邊緣檢測算子檢測的邊緣比較粗,會檢測出一些為便于額,邊緣檢測精確度比較低。
4.3 二階邊緣檢測算子
在利用一階導數的邊緣檢測算子(器)進行邊緣檢測時,有時會出現因檢測到的邊緣點過多而導致邊緣線過粗的情況。通過去除一階導數中的非局部最大值,就可以檢測出更細的邊緣,而一階導數的局部最大值對應二階導數的零交叉點。所以,通過找圖像的二階導數的零交叉點就能找到精確的邊緣點。
4.3.1 拉普拉斯算子
對于階躍狀邊緣,其二階導數在邊緣點出現過零交叉,即邊緣點兩旁的二階導數取異號,據此可以通過二階導數檢測邊緣點。Laplace邊緣檢測算子正是對二維函數進行二階導數運算的標量算子,定義為:
其二階差分可以近似表示為:
同理,
進一步合并,可得:
對應的拉普拉斯運算模板如下:
基于Laplace算子的邊緣檢測如圖13所示。
圖13, 基于Laplace算子的邊緣檢測
邊緣檢測算子模板的基本特征是中心位置的系數為正,其余位置的系數為負,且模板的系數之和為零。它的使用方法是用途中的兩個點陣之一作為卷積核,與原圖像進行卷積運算即可。Laplace檢測模板的特點是各向同性,對孤立點及線段的檢測效果好,Lapace算子的缺點是會出現邊緣方向信息丟失,對噪聲敏感,整體檢測效果不如梯度算子,且須注意到與索貝爾算子相比,對圖像進行處理時,Laplace算子能使噪聲成分得到加強,對噪聲更敏感。
4.3.2 LoG邊緣檢測算子
實際應用中,由于噪聲的影響,對噪聲敏感的邊緣檢測點檢測算法(如拉普拉斯算子法)可能會把噪聲當邊緣點檢測出來,而真正的邊緣點會被噪聲淹沒而未檢測出。為此,Marr和Hildreth提出了馬爾算子,因為是基于Gauss算子和Laplace算子的,所以也稱高斯-拉普拉斯(Laplacian of Gaussian, LoG)邊緣檢測算子,簡稱LoG算子。該方法時現采用Gauss算子對原圖像進行平滑降低噪聲,鼓勵的噪聲點和較小的結構組織將被濾除。由于平滑會導致邊緣的延展,因此在邊緣檢測時僅考慮那些具有局部最大值的點為邊緣點。可以用Laplace算子將邊緣點轉換成零交叉點,然后通過零交叉點的檢測實現邊緣檢測。所謂零交叉點就是,如果一個像素處的值小于某一閾值$Theta_0$,同時像素8-聯通的各個像素都大于$Theta_0$($Theta_0$是一個正數),那么這個像素就是零交叉點。這樣還能克服Laplace算子對噪聲敏感的缺點,減少了噪聲的影響。LoG算子二階導數零交叉的性質對邊緣進行定位,在圖像邊緣檢測方面得到了較好的應用。
簡言之,LoG算子就是一個高斯算子后面疊加上一個LapLace算子,這樣起到了首先抑制噪聲的目的,后面通過Laplace進行邊緣的檢測與提取。典型的二維高斯函數的形式為:
其中,$sigma$稱為尺度因子,用于控制去噪效果;實驗結果表明,當$sigma = 1$時,去噪效果較好。LoG邊緣檢測算法可分為兩個主要過程。
(1)利用二維高斯函數對圖像進行低通濾波,即用二維高斯函數與原圖像$f(x, y)$進行卷積:$g(x, y)=G(x, y, sigma) * f(x,y)$。可得到平滑后的圖像$g_0(x,y)$。二維高斯函數及其導數圖像如圖13,14所示
圖13, 二維高斯函數圖像
圖14,二維高斯函數導數圖像
(2)使用Laplace算子$ ^2$對$g_0(x,y)$進行二階導數運算,就可提取卷積運算后的零交叉點作為圖像的邊緣
其中
稱為LoG算子。邊緣檢測算法對原圖像進行邊緣檢測的結果圖像$g(x,y)$可表示為:$g(x,y) = ^2G(x,y,sigma)*f(x,y)$。LoG算子函數圖像如圖15所示
圖15, LoG算子函數圖像
LoG算子把Gauss的平滑濾波器和Laplacian銳化濾波器結合了起來,即把用二維高斯函數與原圖像$f(x,y)$進行卷積和用Laplace算子$ ^2$對卷積結果進行二階導數運算結合起來;先平滑掉噪聲,再進行邊緣檢測(因為二階導數處于0處對應的像素就是圖像的邊緣),所以邊緣檢測的效果會更好。實際應用中,LoG算子一般取如下$5 imes 5$的模板
基于LoG邊緣檢測的效果如圖16所示
圖16,基于LoG的邊緣檢測效果
LoG算子用到的卷積模板一般比較大(典型的半徑為8~32個像素),不過這些模板可以分別為一維卷積來快速計算。常用的LoG算子是$5 imes 5$模板。與其他邊緣檢測算子一樣,LoG算子也是先對邊緣做出假設,然后再這個假設下尋找邊緣像素。但LoG算子對邊緣的假設條件最少,它的應用范圍更廣。另外,其他邊緣檢測算子檢測得到的邊緣是不連續、不規則的,還需要連接這些邊緣,而LoG算子的結果沒有這個缺點。對于LoG算子邊緣檢測的結果,可以通過高斯函數標準偏差$sigma$進行調整。即$sigma$值越大,噪聲濾波效果越好,但同時也丟失了重要的邊緣信息,影響了邊緣檢測的性能;$sigma$值越小,又有可能平滑不完全而留有太多的噪聲。因此,再不知道物體尺度和位置的情況下,很難準確確定濾波器的$sigma$值。一般來說,使用大$sigma$值得濾波器產生魯棒邊緣,使用小$sigma$值得濾波器產生精確定位的邊緣,兩者結合,能夠檢測出圖像的最佳邊緣。數學上已證明,馬爾算子是按零交叉檢測階躍狀邊緣的最佳算子。但在實際圖像中要注意到,高斯濾波的零交叉點不一定全部是邊緣點,還需要進一步對其真偽進行檢驗。
五,圖像點特征提取
如果圖像中的一個非常小的區域的灰度幅值與其鄰域值相比有明顯的差異,則稱這個非常小的區域為圖像點(一般意義上的孤立像素點),如圖17
圖17,圖像點特征示意
目前對圖像點特征提取的技術有很多種,其中研究最多、應用最廣的是角點檢測算法。關于圖像角點的定義有多種不同的看法。從直觀可視的角度出發,兩條直線相交的頂點可看作是角點;物體的幾個平面的相交處也可以看作是角點。從圖像特征的角度出發,圖像中周圍灰度變化較劇烈的點可看作是角點;圖像邊界上曲率足夠高的點也可看作是角點。常見的角點類型示例如圖18所示
圖18,常見角點類型示例
角點的檢測方法有很多種,其檢測原理也多種多樣,但這些方法概況起來答題可以分為3類:一是基于模板的額角點檢測算法;二是基于邊緣的角點檢測算法;三是基于圖像灰度變化的角點檢測算法。其中,基于圖像灰度變化的角點檢測算法應用最廣泛。下面主要介紹SUSAN角點檢測算法。
SUSAN算法選用圓形模板。將位于圓形窗口模板中心等待檢測的像素點稱為核心點。核心點的鄰域被劃分為兩個區域:亮度值相似于核心點亮度的區域即核值相似區(Univalue Segment Assimilating Nucleus, USAN)和亮度值不相似于核心點亮度的區域。SUSAN算法通過核值相似區的大小判別圖像角點,并實現圖像中角點特征的檢測及提取。SUSAN算子常見檢測模板如圖19所示
圖19,SUSAN算子常見檢測模板
在SUSAN方法中,當模板在目標圖像上移動時,圖像中位于圓形模板(窗口)中心等待被檢測的像素稱為核心點。在假設圖像非紋理的情況下,核心點的鄰域(圖像中位于圓形模板下的除核心點像素意外的其他像素組成的區域)被劃分為兩個區域:一個是灰度值等于(或相似于)核心點灰度值的區域,稱為核值相似區,即USAN;另一個是灰度值不相似于核心點灰度值的區域,即與核心點像素灰度值相差比較明顯的像素組成的區域。設閾值$t$為一幾何灰度門限,當某一像素點的灰度值與模板核心像素點灰度的差值小于幾何門限$t$時,就認為該點與核心點具有相同(或相近)的灰度值,由滿足該條件的額所有像素點組成的區域稱為USAN區域。由USAN區域的定義可知,USAN區域包含了圖像的局部結構信息,其大小反映了圖像局部特征的強度。當模板在圖像上移動時,USAN區域大體可以分為3類:當模板完全處于圖像的背景(如圖19中的白色區域)或目標中(如圖19中的陰影區域)時,USAN區域最大,區域大小等于模板大小,如圖20位置A
圖20,SUSAN算子不同區域圖示
當模板中心處于角點上時,USAN區域最小,如圖20中的位置B;當模板中心處于邊界上時,USAN區域大小為模板大小的一半,如圖20中的位置C;當模板由圖像中逐漸移向圖像邊緣時,USAN區域逐漸變小,如圖中的位置E。
SUSAN算子進行角點檢測的過程如下。
(1)用模板在圖像上進行掃描移動,利用給定的閾值$t$,通過對圖像中模板內任意像素點與核心像素點灰度差值的比較判別該像素點是否屬于USAN區域。當灰度差值小于或等于閾值$t$時,認為該像素點屬于USAN區域;當灰度差值大于閾值$t$時,認為該像素點不屬于USAN區域。其數學表達式為:
其中,$vec{r_{0}}$為圖像中模板核心點像素的位置,$vec{r}$表示圖像中的模板除中心以外的其他任意一點的位置;$I(vec{r})$和$I(vec{r_0})$分別表示袋頂像素點$vec{r}$和$vec{r_0}$中心像素點的灰度值;$t$表示灰度差閾值,閾值取值的大小決定了角點選取的精度。為計算可靠,可以用下式替換
這樣,模板內所有像素點對應的USAN區域大小就可以表示為:
(2)當得到目標的所有像素點的USAN區域大小后,就可以通過各點的能量響應函數判斷該點是否為角點,各像素點的能量響應函數$R(vec{r_0})$定義為:
其中,$n(vec{r_0})$表示點的USAN區域大小;T是余弦設定的幾何門限閾值,用于決定哪寫像素點可以被視為角點。當目標圖像中的某一像素點的USAN區域小于幾何門限時,該像素點就被判定為角點,否則就不是角點。
(3)使用非最大抑制(No Max Supperssion, NMS)方法找特征點,即它通過將一邊緣點作為$3 imes 3$模板的中心,與它的8淋雨范圍內的點進行比較,保留灰度值最大者,這樣就可以找出特征點了。
(4)剔除虛假角點。
基于SUSAN算子的角點檢測相應圖像如圖21所示
圖21, 基于SUSAN算子的角點檢測響應圖像
總結
以上是生活随笔為你收集整理的图像处理与Python实现(岳亚伟)笔记五——图像特征提取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老款途锐四驱分动箱电机保险在什么位置?
- 下一篇: 我是收割机,发动机没劲,不冒烟,高温,是