- 機器視覺與機器學習:算法原理、框架應用與代碼實現
- 宋麗梅 朱新軍編著
- 5671字
- 2020-09-18 18:33:18
2.4 圖像特征提取
2.4.1 特征提取算法
(1)特征點
如何選取合適的圖像特征一直是圖像檢測領域的研究熱點,不好的圖像特征不僅會引入非線性關系,還會引入噪聲,影響缺陷判別的實現。對于特征提取算法來說,算法的魯棒性會直接影響整個缺陷檢測系統的魯棒性,甚至會影響系統的穩定性。目前圖像檢測與識別領域常用的圖像特征有Hu不變矩、Haar特征算子和surf特征,這三種特征都具有平移、旋轉、縮放不變性,有良好的魯棒性。下面介紹前兩種特征。
Hu不變矩是由Hu提出的,其利用中心矩構造出7個不變量,可以對區域形狀進行描述,而且具有平移、比例、旋轉不變性,在機器視覺中是一種十分重要的特征描述方法。
對于分布為f(x,y)的灰度圖像,定義其(p+q)階矩為

且對應的中心矩定義為

式中,,
,(x0,y0)為圖像質心。
數字圖像的分布是不連續的,將矩函數與中心矩函數離散化可得

式中,M和N為圖像大小。
定義歸一化中心矩為

其中,。
7個不變量分別為

Haar特征是由Papageorgiou提出的,最早用來進行人臉檢測與識別的特征算子,隨著特征識別算法的普及和傳播已經越來越多地應用在手勢識別、物體追蹤等方面。
首先構造幾種不同的特征模板,如圖2-28所示。

圖2-28 Haar特征模板
a)Haar特征模板1 b)Haar特征模板2 c)Haar特征模板3 d)Haar特征模板4
將模板作為滑動窗口,在目標圖像上進行滑動與縮放來求得Haar特征值。對于特征模板1、特征模板2和特征模板3,Haar特征值求解公式為

式中,sum(white)表示模板中白色部分的像素值之和,sum(black)表示模板中黑色部分的像素值之和。
特征模板4的求解方法為

由于Haar特征模板在圖像上進行滑動和縮放時產生的特征數量很多,所以之后需要利用主成分分析(PCA)技術篩選和變換特征空間。
為了快速求出如此多的特征,在求解Haar特征時引入了積分圖像的概念,公式為

式中,ii(x,y)為待求積分圖像;I(i,j)為原始圖像在(i,j)像素處的像素值。構建積分圖像可以很方便地求任何區域內所有像素值之和。設在原圖上有區域A(α,β,γ,ψ),α、β、γ和ψ分別為區域A的4個頂點,則區域A中所有像素和的計算方法為

由式(2-93)和式(2-94)可以看出,求Haar特征的過程就是求出區域像素值和然后作差的過程,這可以映射到積分圖像上,使得矩形內的求和運算變成矩形端點的運算,這樣,不管矩形尺度如何變換,其計算時間總是一致的,而且只需遍歷一次積分圖像就可以求得所有子窗口的特征值。
(2)紋理特征
灰度共生矩陣分析方法(GLCM)是建立在圖像的二階組合條件概率密度估計基礎上的。它通過計算圖像中某一距離和某一方向上兩點之間灰度的相關性,來反映圖像在方向、間隔、變化快慢及幅度上的綜合信息,從而準確描述紋理的不同特性。
灰度共生矩陣是一個聯合概率矩陣,它描述了圖像中滿足一定方向和一定距離的兩個灰度值出現的概率,具體定義為:灰度值分別為i和j的一對像素點,位置方向為θ,像素距離為d時的概率,記作p(i,j,d,θ)。通常,對θ=0°,45°,90°,135°,d=1的數字圖像而言,其灰度共生矩陣計算公式為

式中,i,j=0,1,…L-1,L是灰度等級,取L=256,是圖像中像素的坐標。
由于d、θ選取不同,灰度共生矩陣中向量的意義和范圍也不同,因此有必要對p(i,j,d,θ)進行歸一化處理

式中,Num為歸一化常數,這里取相鄰像素對的個數。
為簡便起見,后文中忽略了對d和θ的討論,將歸一化后的圖像灰度共生矩陣簡化為Pij。作為圖像紋理分析的特征量,灰度共生矩陣不能直接用于圖像特征的分析,而是需要在灰度共生矩陣的基礎上計算圖像的二階統計特征參數。Haralick提出了多種基于灰度共生矩陣的紋理特征統計參數,這里采用了常用的7種,并給出了詳細的描述。
1)反差,即主對角線的慣性矩:

慣性矩度量灰度共生矩陣的值分布情況和圖像中局部變化的大小反映了圖像的清晰度和紋理的粗細。粗紋理的Pij值較集中于主對角線附近,i-j較小,所以反差較小,圖像較模糊;細紋理反差較大,圖像較清晰。
2)熵:

熵度量圖像紋理的不規則性。當圖像中像素灰度分布非常雜亂、隨機時,灰度共生矩陣中的像素值很小,熵值很大;反之,當圖像中像素分布井然有序時,熵值很小。
3)逆差距:

逆差矩度量圖像紋理局部變化的大小。當圖像紋理的不同區域間缺少變化時,其局部灰度非常均勻,圖像像素對的灰度差值較小,逆差矩較大。
4)灰度相關:

其中

式中,μ表示均值,σ表示標準差。
灰度相關用來描述矩陣中行或列元素之間的灰度相似度。相關值大表明矩陣中元素均勻相等;反之,表明矩陣中元素相差很大。當圖像中相似的紋理區域有某種方向性時,相關值較大。
5)能量(角二階距):

能量反映圖形灰度分布的均勻性和紋理粗細度。當Pij數值分布較集中時,能量較大;當Pij中所有值均相等時,能量較小。如果一幅圖像的灰度值均相等,則其灰度共生矩陣Pij只有一個值(等于圖像的像素總數),其能量值最大。所以,能量值大就表明圖像灰度分布較均勻,圖像紋理較規則。
6)集群蔭:

7)集群突出:

2.4.2 主成分分析
從原始圖像中提取到的特征還不能直接用于分類器的訓練:一方面原始特征會帶有噪聲,直接用于分類器訓練容易造成分類器的過擬合;另一方面原始特征往往維度較高而有用數據所占比例較少,直接用于分類器訓練會導致訓練需要更多的迭代次數。而且有時候由于數據噪聲比較多,還會使數據呈非線性分布,這樣使用一般的分類器就無法獲得很高的判斷精度。因此需要對數據進行降維、壓縮、去噪及數據空間的變換。目前,常用的數據處理方法有主成分分析(Principal Component Analysis,PCA)、基于核函數的主成分分析(Kernel Principal Component Analysis,KPCA)、線性判別分析(Linear Discriminant Analysis,LDA)。
主成分分析是一種無監督數據特征空間線性轉換技術,廣泛用于數據降維、去噪。在大數據領域,它是數據挖掘必不可少的一步;在生物工程學領域,它主要應用于基因表達與基因分析;在金融領域,它應用在股票交易與信號去噪中。
主成分分析的主要工作是將原始高維數據映射到新的數據子空間,通過特征之間的相關性可確定數據中存在的模式,還可以利用原始數據中的最大方差方向。通常,子空間的維度不大于原始特征空間。新的數據子空間正交軸即原始高維數據的主成分,也是待求的原始空間最大方差方向。以二維數據空間為例,如圖2-29所示。其中,X1、X2為原始數據空間的特征軸;PC1、PC2為變換后新的數據子空間特征軸,也就是原始數據的主成分。
主成分分析的數據壓縮過程其實就是求解變換矩陣W的過程,W為k×d的矩陣。其中,d為原始數據空間的維度;k為映射后新的數據子空間維度,且k≤d。數據變換過程為

式中,X為原始數據空間中的數據;Z為變換后新數據子空間中的數據。圖2-30為主成分分析的系統流程圖。

圖2-29 主成分分析的數據子空間示意圖

圖2-30 主成分分析的系統流程圖
數據標準化是機器學習中常用的數據縮放算法,經過特定的縮放過程,使數據變成均值為0、方差為1的分布,從而消除特征范圍對主成分分析方向的影響。
令xj為數據X第j維度的特征;μj和σj分別為第j維度數據的平均值與標準差。數據標準化過程如下

式中,為標準化后第j維度的數據。
對于第k維度與第j維度的協方差可以表示為它們與各自期望之差的乘積和后求期望,公式如下

式中,xij表示第i個數據在j特征維度上的特征;xik表示第i個數據在k特征維度上的特征;μj和μk為對應特征維度的平均值。由于數據在計算協方差前進行了標準化,由標準化的定義可知μj和μk均等于0,故公式(2-106)可改寫為

由協方差計算公式可知,協方差矩陣是d×d的對稱矩陣。協方差矩陣的特征向量代表了主成分(最大方差的方向),對應的特征值決定了特征向量絕對值的大小。因此求解其特征值特征向量,計算方法如下

式中,τ為協方差矩陣;λ為待求特征值;v為特征向量。因為協方差矩陣是實對稱矩陣,因此可以采用雅可比迭代法編程實現。
計算出特征值與特征向量后,通過篩選特征值構建變換矩陣W。在降維壓縮過程中,需要利用包含原始數據空間中最多信息的特征向量,由主成分分析的定義可知,協方差矩陣的特征值大小反映了特征向量包含信息的多少,因此將特征值與對應的特征向量從大到小排序并提取前k個特征相量構建變換矩陣。同時引入方差解釋率

式中,δi為待求第i個特征值的方差解釋率;為所有特征值之和。
在實際應用中通常選擇k個特征向量,使得滿足以下條件

這樣在數據壓縮的同時可以盡量多地保留原始數據空間中的主成分。最后利用k個特征向量組成的變換矩陣W,根據式(2-104)完成數據轉換。
2.4.3 SIFT特征點
SIFT(Scale Invariant Feature Transform,尺度不變特征變換)方法是David Lowe于1999年提出的一種基于尺度空間的圖像局部特征表示方法,它具有圖像縮放、旋轉甚至仿射變換不變的特性,并于2004年得到了更深入的發展和完善。SIFT本質上是一種在不同尺度空間下檢測關鍵點(特征點),并對關鍵點的方向進行計算的算法。SIFT被廣泛應用在機器視覺、三維重建等領域。
一般的SIFT算法分為以下幾個步驟完成。
1. 尺度空間的生成
尺度空間理論即采用高斯核理論對初始圖片進行尺度變換運算,得到圖片在多個尺度下的尺度空間描述序列,最后在尺度空間下對得到的序列進行特征提取。圖像尺度的變換通常由高斯卷積核進行唯一確定,不同尺度下的目標圖像和高斯卷積核進行卷積的結果就是圖像的尺度空間,可以表示為

其中的高斯函數G(x,y,σ)可以實現尺度的變換,其表達式為

式中,σ為高斯尺度因子,隨著σ的增大,圖像平滑程度慢慢變大,圖像變得越模糊;反之,圖像保留的細節越豐富,圖像變得越清晰。
高斯差分尺度空間公式為

式中,k是兩個相鄰尺度空間的尺度因子在變換時的倍數,它發生在建立尺度金字塔的過程中。
2. DOG極值點檢測與定位
DOG(Difference of Guassian,高斯差分)算子局部極值點就是SIFT算子下圖像特征點的子集,在進行極值點檢測時,為找到極值點,要將每一個像素點和其三維領域內的26個點進行比較,如果它是這些點中的最大值或最小值,則被保存下來,作為目標圖像在這個標準下的特征點,即為候選特征點。
為了消除對比度較低的點和DOG算子產生的不穩定邊緣點,可通過擬合三維二次函數來計算出特征點的位置和尺度,進而增強后續圖像匹配的穩定性和抗噪能力。將圖像的尺度空間函數通過泰勒公式進行展開可得

對其進行求導,選定特征點的精準位置

將式(2-115)代入式(2-114)并取其前兩項得

如果,則該特征點被保留下來,否則舍掉。特征點的位置和尺度可以表示為

由于高斯差分后的算子極值點其主曲率在x方向上的值較大,在y方向的數值較小,經過2×2黑塞(Hessian)矩陣的計算得到的結果為

H的最大特征值為α,最小特征值為β,α=γβ,其中γ為比例系數,如果

則去除了邊緣相應的較大極值點。
3. 特征點方向分配
上一步中得到了圖像的特征點,然后利用特征點鄰域像素的梯度方向分布特性對每個特征點添加一個方向,使得這些特征點具有旋轉不變性,公式為

式中,m(x,y)和θ(x,y)分別是特征點(x,y)處梯度的模值和方向,L表示各個特征點所在的尺度。
首先以各個特征點為中心創建鄰域窗口,然后對創建的鄰域窗口進行采樣處理,最后將每一個像素梯度方向的次數用直方圖來表示,如圖2-31所示。

圖2-31 梯度方向直方圖
至此,特征點檢測完畢,每個特征點都可以由3個信息表示:二維位置信息(x,y)、尺度空間信息σ和主方向信息θ。
4. 特征點描述子的生成
為了使圖像具有旋轉不變性,首先將坐標軸旋轉至與特征點主方向一致,然后以特征點為中心,將其周圍的8×8鄰域窗口(見圖2-32)分為4個子塊,接著計算每個子塊8個方向的梯度方向直方圖,最后繪制出每個梯度方向的累加值,從而形成種子點,每個種子點有8個矢量信息。

圖2-32 特征點描述子的生成
SIFT特征點的匹配可參考以下程序(https://xmfbit.github.io/2017/01/30/cs131-sift/):

2.4.4 SURF特征點
Bay提出的SURF(Speeded Up Robust Feature,加速穩健特征)算法是一個速度較快、魯棒性能較好的方法。它是SIFT算法的改進,融合了哈里斯(Harris)特征和積分圖像,加快了程序的運行速度。具體來說,該算法可分為建立積分圖像、構建黑塞(Hessian)矩陣和高斯金字塔尺度空間、定位特征點、確定主方向、生成特征點描述子等幾步完成。
1. 建立積分圖像
由于SURF算法的積分圖用于加速圖像卷積,所以加快了SURF算法的計算速度。對于一個灰度圖像I(i,j),圖像中的像素積分為

2. 構建黑塞矩陣和高斯金字塔尺度空間
(x,y)為圖像中的任意一點,在(x,y)處,尺度為σ的黑塞矩陣H(x,y,σ)可以表示為

式中,Lxx(x,y,σ)是高斯函數與二階微分在點(x,y)處與圖像I(x,y)的卷積,Lxy(x,y,σ)和Lyy(x,y,σ)與此類似。
SURF算法選用DOG算子D(x,y,σ)代替LOG算子來近似地表達,得到類似的黑塞矩陣為

式中,ω=0.9,為矩陣的權重;Dxx、Dyy、Dxy表示箱式濾波和圖像卷積的值,取代了Lxx、Lyy、Lxy的值。在進行極值點判斷時,如果det(Happrox)的符號為正,則該點為極值點。
圖2-33上面的圖為先使用高斯平滑濾波,然后在y方向上進行二階求導的結果;下面的圖為濾波后在x和y方向上進行二階求導的結果。

圖2-33 SURF箱式濾波器
3. 定位特征點
得到各像素點的黑塞矩陣后,根據其行列式的正負判斷是否為極值點,并使用非極大值抑制法在3×3×3立體鄰域檢測極值點,只將比它所在尺度層的周圍8個點和上下兩層對應的9個點都大或者都小的極值點作為候選特征點。
4. 確定主方向
以每個候選特征點為中心,6s(s為特征點尺度)為特征點尺度的半徑,以Harr小波統計總響應的60°扇區和x在y方向的所有特征點(Harr小波尺寸4S),高斯分配權重系數的響應,然后以中心角60°扇區模板遍歷整個圓形區域,如圖2-34所示,將最長的向量作為特征點的方向。
5. 生成特征點描述子
確定主方向后,需要生成特征點描述子。將20s×20s正方形區域中感興趣的區域分割成4×4的正方形子區域(每個子區域的大小是5s×5s)。如圖2-35所示,對于被計算的每一個子區域,將Harr小波響應的水平分量表示為dx,垂直分量表示為dy,然后響應區域dx、dy的和以及絕對值|dx|、|dy|被計算出來,每個子區域形成一個四維的描述向量


圖2-34 選取特征點的主方向
這樣,最終生成的每一個特征點描述子都是一個4×(4×4)=64維的特征向量,比SIFT算法減小了很多,所以提高了匹配的速度。

圖2-35 構造64維的特征點描述子
圖2-36所示為SURF特征點匹配結果。特征點的匹配采用了MATLAB工具箱中的matchFeatures函數。



圖2-36 SURF特征點匹配
a)參考圖 b)匹配圖 c)SURF特征點匹配結果
- Painter 現代服裝效果圖表現技法
- Apache OFBiz Development: The Beginner's Tutorial
- Ext JS 3.0 Cookbook
- VMware虛擬化與云計算:vSphere運維卷
- Sencha Touch Cookbook, Second Edition
- MySQL Admin Cookbook LITE: Configuration, Server Monitoring, Managing Users
- 圖解Word 2007圖文排版與辦公應用
- GlassFish Administration
- Vivado從此開始(進階篇)
- Django 1.0 Template Development
- 中文版Photoshop 2022基礎教程
- Adobe創意大學InDesign CS5 產品專家認證標準教材
- Midjourney商業設計完全教程
- 短視頻剪輯基礎與實戰應用(剪映電腦版)
- Photoshop+AE UI動效設計從新手到高手