图像识别入门概述
一、基本概念與原理
1.圖像的組成:指的是圖像的光學組成概念。圖像是由很多具備色彩種類、亮度等級信息的基本像素點組成的,是二維圖像用有限數(shù)字數(shù)值像素的表示。而數(shù)字圖像又稱為數(shù)碼圖像、數(shù)位圖像。
2.基本過程:
圖像識別通常有輪廓識別、特征識別、色彩識別、物體識別等,其中輪廓識別是重中之重。而圖像識別的基本流程為:信息獲取圖像采集->圖像預處理得到特征數(shù)據(jù)->訓練過程->識別。
3.幾個基本概念:
3.1模式識別:大致分為結(jié)構(gòu)方法和決策理論方法(又稱統(tǒng)計方法)。常用方法之一是模板匹配,即在輸入圖像上不斷切割出臨時圖像,再與模板圖像進行匹配。
3.2支持向量機(SVM):SVM是從線性可分情況下的最優(yōu)分類超平面發(fā)展而來的。它是一種分類器,是一種可訓練的、基于結(jié)構(gòu)風險最小化原則的通用機器學習方法,時線性化和升維的過程。
3.3OpenCV:基于BSD許可證授權(quán)發(fā)行的跨平臺計算機視覺庫。
3.4LIBSVM:一個簡單、易于使用的SVM模式識別與回歸軟件包。
?
?
二、熱門應用與方向:
圖像識別主要經(jīng)歷了三個階段:對文字信息的識別,對數(shù)字化信息的識別,和對物體的識別。圖像識別經(jīng)過這三個階段不斷發(fā)展,充分發(fā)揮自身特點與優(yōu)勢,逐步拓展至各個領域,與各行業(yè)技術(shù)相結(jié)合。圖像識別技術(shù)的主要應用與發(fā)展方向有字符識別、機器視覺識別、圖形圖像識別、生物醫(yī)學等。
在交通領域,圖像識別技術(shù)主要應用于ITS系統(tǒng)中,在道路識別、車輛車牌檢測等方面展現(xiàn)出巨大優(yōu)勢;在安防領域,基于圖像識別技術(shù)的視頻智能分析系統(tǒng)能夠?qū)崿F(xiàn)人臉識別、人臉支付、智能自動化監(jiān)控等;在醫(yī)學領域,CT技術(shù)實際上就是圖像識別技術(shù)的拓展應用,微創(chuàng)手術(shù)中的手術(shù)導航技術(shù)也運用了圖像識別技術(shù),同時,在心臟、腦結(jié)構(gòu)等器官識別方面也有著不可替代的地位;而在農(nóng)業(yè)領域,圖像識別技術(shù)在病蟲害診斷、檢測農(nóng)作物生長等方面也發(fā)揮了巨大總用。下面將主要對從智能識別車牌和人臉識別所用到的圖像識別技術(shù)進行闡述。
?
1.智能識別車牌
1.1圖像特征提取
1.1.1像素特征提取:將圖像像素點黑白二值化(黑色為1,白色為0)。對1和0進行排列,通過維數(shù)和像素點個數(shù)確定對應的向量矩陣。
1.1.2骨架特征提取:圖像線條寬度會影響識別效果,所以要先對輪廓的寬度進行統(tǒng)一處理,再進行骨架特征提取,得到對應的特征向量矩陣。
1.1.3圖像特征點提取:主要方法有梯度統(tǒng)計、弧度統(tǒng)計、角點提取等。原理是將字符均分為8個模塊,計算黑色像素點個數(shù)作為8個象限的特征。
?
1.2圖像分割
1.2.1灰度轉(zhuǎn)化:對256色位圖圖像進行灰度化處理,轉(zhuǎn)化為灰度圖像。
1.2.2二值化:將灰度圖像中像素進行灰度值獲取分化,處理為黑白二色,結(jié)合閾值法得到轉(zhuǎn)化后的圖像。
1.2.3梯度銳化處理:常用方法為微分法和高通濾波法。利用微分法求得梯度,利用差分運算近似值計算圖像邊緣的像素值,可以使邊緣模糊的圖像清晰化。
1.2.4噪聲處理:圖像處理時有明顯的信號集中時,掃描周邊信號,若信號強烈且在一定范圍內(nèi),則認為是非離散信號;若周邊信號較弱,則認為是離散信號,需要去除。
1.2.5車牌字符分割算法:主要有垂直投影法、靜態(tài)邊界法及連通區(qū)域法。垂直投影法利用字符塊塊在垂直方向上的投影的特點展開;靜態(tài)邊界法利用車牌的模板進行分割;連通區(qū)域法利用字符連通域的特點對車牌字符進行分割。
1.2.6同一圖像中對不同尺寸、位置的字符進行歸一處理:通過等比例縮放、歸一處理等方法,將不同的字符圖像轉(zhuǎn)化為相對統(tǒng)一的字符,提高識別準確率。
?
2.人臉識別
人臉識別技術(shù)主要可以分為三類:基于幾何特征的方法、基于模板的方法和基于模型的方法。
2.1基于幾何特征的方法
是最早、最傳統(tǒng)的方法,需與其它算法相結(jié)合才有較好效果。幾何特征最早用于人臉側(cè)面輪廓的描述與識別。首先根據(jù)側(cè)面輪廓曲線確定若干顯著點,并由這些點導出一組用于識別的特征度量(如距離、角度)。
可變模型法可視為幾何特征方法的一種改進。其思想是設計一個參數(shù)可變的器官模型。定義一個能量參數(shù),通過調(diào)整模型參數(shù)使能量函數(shù)最小化,此時的模型參數(shù)即作為該器官的幾何特征。
?
2.2特征臉法
又稱為基于主成分分析(PCA)的人臉識別方法。其基本思想是從統(tǒng)計的觀點,尋找人臉圖像分布的基本元素,即人臉圖像樣本集協(xié)方差矩陣的特征向量,以此近似的表征人臉圖像。
?
2.3基于彈性模型的方法
Lades等人針對畸變不變形的物體識別提出了動態(tài)鏈接模型。將物體用稀疏圖形來描述,應用塑形圖形匹配技術(shù)來尋找最近的已知圖形。Nastar將人臉圖像建模成可變形的3D網(wǎng)格表面,將人臉匹配的問題轉(zhuǎn)化為可變性曲面的彈性匹配問題。Lanitis等提出靈活表現(xiàn)模型方法,通過定位人臉的顯著特征點將人臉編碼為83個模型參數(shù),并利用辨別分析的方法進行基于形狀信息的人臉識別。
彈性圖匹配技術(shù)是一種基于幾何特征和對灰度分布信息進行小波紋理分析相結(jié)合的識別算法,由于該算法較好的利用了人臉的結(jié)構(gòu)和灰度分布信息,而且還具有自動精確定位面部特征點的功能,因而具有良好的識別效果,適應性強識別率較高,該技術(shù)在FERET測試中若干指標名列前茅,其缺點是時間復雜度高,速度較慢,實現(xiàn)復雜。
?
2.4神經(jīng)網(wǎng)絡方法
神經(jīng)網(wǎng)絡算法可以通過學習的過程獲得對這些規(guī)律和規(guī)則的隱性表達,它通過需要將人臉作為一個一維向量輸入,因此識別的一個重要目標就是降維處理。
Valentin提出一種方法,首先提取人臉的?50個主元,然后用自相關(guān)神經(jīng)網(wǎng)絡將它映射到?5維空間中,再用一個普通的多層感知器進行判別,對一些簡單的測試圖像效果較好;Intrator等提出了一種混合型神經(jīng)網(wǎng)絡來進行人臉識別,其中非監(jiān)督神經(jīng)網(wǎng)絡用于特征提取,而監(jiān)督神經(jīng)網(wǎng)絡用于分類。Lee等將人臉的特點用六條規(guī)則描述,然后根據(jù)這六條規(guī)則進行五官的定位,將五官之間的幾何距離輸入模糊神經(jīng)網(wǎng)絡進行識別,效果較一般的基于歐氏距離的方法有較大改善,Laurence等采用卷積神經(jīng)網(wǎng)絡方法進行人臉識別,由于卷積神經(jīng)網(wǎng)絡中集成了相鄰像素之間的相關(guān)性知識,從而在一定程度上獲得了對圖像平移、旋轉(zhuǎn)和局部變形的不變性,因此得到非常理想的識別結(jié)果,Lin等提出了基于概率決策的神經(jīng)網(wǎng)絡方法?(PDBNN),其主要思想是采用虛擬?(正反例?)樣本進行強化和反強化學習,從而得到較為理想的概率估計結(jié)果,并采用模塊化的網(wǎng)絡結(jié)構(gòu)?(OCON)加快網(wǎng)絡的學習。
?
?
三、主要算法
1.斑點檢測原理與舉例:
1.1 LoG與DoH
斑點檢測的方法主要包括利用高斯拉普拉斯算子檢測的方法(LOG),以及利用像素點Hessian矩陣(二階微分)及其行列式值的方法(DOH)。
利用高斯拉普通拉斯(Laplace of Gaussian,LOG)算子檢測圖像斑點是一種十分常用的方法,對于二維高斯函數(shù):
它的規(guī)范化高斯拉普變換為:
因為二維高斯函數(shù)的拉普拉斯核很像一個斑點,所以可以利用卷積來求出圖像中的斑點狀的結(jié)構(gòu)。
DoH方法就是利用圖像點二階微分Hessian矩陣:
以及它的行列式的值DoH(Determinant of Hessian):
Hessian矩陣行列式的值,同樣也反映了圖像局部的結(jié)構(gòu)信息。與LoG相比,DoH對圖像中的細長結(jié)構(gòu)的斑點有較好的抑制作用。
?
1.2 SIFT
該算法大概可以歸納為三步:1)高斯差分金字塔的構(gòu)建;2)特征點的搜索;3)特征描述。
在第一步中,它用組與層的結(jié)構(gòu)構(gòu)建了一個具有線性關(guān)系的金字塔結(jié)構(gòu),讓我們可以在連續(xù)的高斯核尺度上查找特征點。它比LoG高明的地方在于,它用一階高斯差分來近似高斯的拉普拉斯核,大大減少了運算量。
在第二步的特征點搜索中,主要的關(guān)鍵步驟是極值點的插值,因為在離散的空間中,局部極值點可能并不是真正意義上的極值點,真正的極植點可以落在了離散點的縫隙中。所以要對這些縫隙位置進行插值,然后再求極值點的坐標位置。
最后一步,即為特征點的特征描述。特征點的方向的求法是需要對特征點鄰域內(nèi)的點的梯度方向進行直方圖統(tǒng)計,選取直方圖中比重最大的方向為特征點的主方向,還可以選擇一個輔方向。在計算特征矢量時,需要對局部圖像進行沿主方向旋轉(zhuǎn),然后再進鄰域內(nèi)的梯度直方圖統(tǒng)計(4x4x8)。
?
1.3 SURF
2006年,Bay和Ess等人基于SIFT算法的思路,提出了加速魯棒特征(SURF),該算法主要針對于SIFT算法速度太慢,計算量大的缺點,使用了近似Harr小波方法來提取特征點,這種方法就是基于Hessian行列式(DoH)的斑點特征檢測方法。通過在不同的尺度上利用積分圖像可以有效地計算出近似Harr小波值,簡化了二階微分模板的構(gòu)建,搞高了尺度空間的特征檢測的效率。SURF算法在積分圖像上使用了盒子濾波器對二階微分模板進行了簡化,從而構(gòu)建了Hessian矩陣元素值,進而縮短了特征提取的時間,提高了效率。
其中和為利用盒子濾波器獲得的近似卷積值。如果大于設置的門限值,則判定該像素點為關(guān)鍵字。然后與SIFT算法近似,在以關(guān)鍵點為中心的像素鄰域內(nèi)進行非極大值抑制,最后通過對斑點特征進行插值運算,完成了SURF特征點的精確定位。而SURF特征點的描述,則也是充分利用了積分圖,用兩個方向上的Harr小波模板來計算梯度,然后用一個扇形對鄰域內(nèi)點的梯度方向進行統(tǒng)計,求得特征點的主方向。
?
2.角點檢測與舉例
2.1 Harris角點特征提取
Harris角點檢測是一種基于圖像灰度的一階導數(shù)矩陣檢測方法。檢測器的主要思想是局部自相似性/自相關(guān)性,即在某個局部窗口內(nèi)圖像塊與在各個方向微小移動后的窗口內(nèi)圖像塊的相似性。在像素點的鄰域內(nèi),導數(shù)矩陣描述了數(shù)據(jù)信號的變化情況。假設在像素點鄰域內(nèi)任意方向上移動塊區(qū)域,若強度發(fā)生了劇烈變化,則變化處的像素點為角點。定義的Harris矩陣為:
其中,和分別為點在和方向上的強度信息的一階導數(shù),為對應位置的權(quán)重。通過計算Harris矩陣的角點響應值R來判斷是否為角點。其計算公式為:
其中,det和trace為行列式和跡的操作符,是取值為0.04~0.06的常數(shù)。當角點響應值大于設置的門限,且為該點鄰域內(nèi)的局部最大值時,則把該點當作角點。
?
2.2 FAST角點特征提取
基于加速分割測試的FAST算法可以快速地提取出角點特征。該算法判斷一個候選點是否為角點,依據(jù)的是在一個像素點為圓心,半徑為3個像素的離散化Bresenllam圓周上,在給定閾值的條件下,如果在圓周上有個連續(xù)的像素灰度值大于或小于。針對于上面的定義,我們可以用快速的方法來完成檢測,而不用把圓周上的所有點都比較一遍。首先比較上下左右四個點的像素值關(guān)系,至少要有3個點的像素灰度值大于或小于,則為候選點,然后再進一步進行完整的判斷。
?
3.二進制字符串特征描述子
特征描述是實現(xiàn)圖像匹配與圖像搜索必不可少的步驟。到目前為止,人們研究了各種各樣的特征描述子,比較有代表性的就是浮點型特征描述子和二進帽字符串特征描述子。
3.1 BRIEF算法
BRJEF算法的主要思想是:在特征點周圍鄰域內(nèi)選取若干個像素點對,通過對這些點對的灰度值比較,將比較的結(jié)果組合成一個二進制串字符串用來描述特征點。最后,使用漢明距離來計算在特征描述子是否匹配。
?
3.2 BRISK算法
BRISK算法在特征點檢測部分沒有選用FAST特征點檢測,而是選用了穩(wěn)定性更強的AGAST算法。在特征描述子的構(gòu)建中,BRISK算法通過利用簡單的像素灰度值比較,進而得到一個級聯(lián)的二進制比特串來描述每個特征點,這一點上原理與BRIEF是一致的。BRISK算法里采用了鄰域采樣模式,即以特征點為圓心,構(gòu)建多個不同半徑的離散化Bresenham同心圓,然后再每一個同心圓上獲得具有相同間距的N個采樣點。
由于這種鄰域采樣模式在采樣時會產(chǎn)生圖像灰度混疊的影響,所以BRISK算法首先對圖像進行了高斯平滑圖像。并且使用的高斯函數(shù)標準差與各自同心圓上點間距成正比。
?
3.3 ORB算法
ORB算法使用FAST進行特征點檢測,然后用BREIF進行特征點的特征描述,但是我們知道BRIEF并沒有特征點方向的概念,所以ORB在BRIEF基礎上引入了方向的計算方法,并在點對的挑選上使用貪婪搜索算法,挑出了一些區(qū)分性強的點對用來描述二進制串。
?
3.4 FREAK算法
Fast Retina KeyPoint,即快速視網(wǎng)膜關(guān)鍵點。根據(jù)視網(wǎng)膜原理進行點對采樣,中間密集一些,離中心越遠越稀疏。并且由粗到精構(gòu)建描述子,窮舉貪婪搜索找相關(guān)性小的。42個感受野,一千對點的組合,找前512個即可。這512個分成4組,前128對相關(guān)性更小,可以代表粗的信息,后面越來越精。匹配的時候可以先看前16bytes,即代表精信息的部分,如果距離小于某個閾值,再繼續(xù),否則就不用往下看了。
?
?
四、主流工具庫比較
?1.OpenCV
功能十分的強大,而且支持目前先進的圖像處理技術(shù),體系十分完善,操作手冊很詳細,手冊首先給大家補計算機視覺的知識,幾乎涵蓋了近10年內(nèi)的主流算法;然后將圖像格式和矩陣運算,然后將各個算法的實現(xiàn)函數(shù)。該庫顯示圖像極其方便,但不大穩(wěn)定,對32F和16S、8U的圖像數(shù)據(jù)支持上bug重重。支持CVS。另外該庫用的是IPL矩陣庫,速度較快。
2.CxImage
該開發(fā)包完全開放源代碼,圖像封裝為一個類,功能極為強大,與Windows、MFC支持極好,支持圖像的多種操作(線性濾波、中值濾波、直方圖操作、旋轉(zhuǎn)縮放、區(qū)域選取、閾值處理、膨脹腐蝕、alpha混合等等),支持從文件、內(nèi)存或者win32api定義的位圖圖像格式中讀取圖像,支持將圖像顯示在任意窗口,而且對像素的操作很方便,另外還有一個界面很強的demo,可以直接在上面進行二次開發(fā)。但該庫速度稍慢,不如后面提到的freeimage。
3. CImg
就一個.h文件所以用起來很簡明,但功能上不如CxImage全面,可以與CxImage配合使用。CImg提供了基于lapack的矩陣運算函數(shù)和完善的線性濾波卷積函數(shù),使用其做像素運算較為方便。另外,獨有Display類可以方便的實現(xiàn)各種顯示,包括顯示圖像、打字、畫線等等。
4. FreeImage
C語言的體系,大量使用指針運算速度可以保證,內(nèi)含先進的多種插值算法。另外獨有的支持meta exif信息的讀取。該庫最大的特點就是比較簡練,只把重點放在對各種格式圖像的讀取寫入支持上,沒有顯示部分,實際編程的時候還是需要調(diào)用API函數(shù)進行顯示。
?
?
?
參考文獻:
?
總結(jié)
- 上一篇: 基于神经网络的图像识别
- 下一篇: 基于MATLAB BP神经网络的数字图像