本模塊是用在圖像內容識別的部分,圖像分類是利用計算機對圖像進行定量分析,把圖像中的每一個像元或區域劃歸爲若干個類別中的一種,以代替人工視覺判讀的技術。從目視角度來講,對圖像進行提升對比度、增長視覺維數、進行空間濾波或變換等處理的目的就是令人們可以憑藉知識和經驗,根據圖像亮度、色調、位置、紋理和結構等特徵,準確地對圖像景物類型或目標作出正確的判讀和解釋。
特徵提取是計算機視覺和圖像處理中的一個概念。它指的是使用計算機提取圖像信息,決定每一個圖像的點是否屬於一個圖像特徵。特徵提取的結果是把圖像上的點分爲不一樣的子集,這些子集每每屬於孤立的點、連續的曲線或者連續的區域。根據各自在圖像信息中所反映的不一樣特徵,把不一樣類別的目標區分開來的圖像處理方法。它利用計算機對圖像進行定量分析,把圖像或圖像中的每一個像元或區域劃歸爲若干個類別中的某一種,以代替人的視覺判讀。html
該模塊做用是先對一些已經歸類好的圖片做爲輸入,再對一些未知類別的圖片進行預測分類。本模塊在該項目中能夠分出二維碼、logo、以及文字 。例如一給定圖像,檢測並讀取其中全部的條碼、logo、文字,即便他們處於任意的位置及角度,若是圖像中可能有任意數量及格式的條碼、logo和文字,輸出全部的條碼、logo和文字(1個或多個)。算法
特徵提取算法surf
有關surf算法的介紹網上有不少,在這裏我就不一一介紹,你們也能夠參考下面的文章:http://blog.csdn.net/yujiflying/article/details/8203511函數
聚類算法:Kmeans算法
k-means 算法接受參數 k ;而後將事先輸入的n個數據對象劃分爲 k個聚類以便使得所得到的聚類知足:同一聚類中的對象類似度較高;而不一樣聚類中的對象類似度較小。聚類類似度是利用各聚類中對象的均值所得到一個「中心對象」(引力中心)來進行計算的。
K-means算法是最爲經典的基於劃分的聚類方法,是十大經典數據挖掘算法之一。K-means算法的基本思想是:以空間中k個點爲中心進行聚類,對最靠近他們的對象歸類。經過迭代的方法,逐次更新各聚類中心的值,直至獲得最好的聚類結果。
假設要把樣本集分爲c個類別,算法描述以下:
(1)適當選擇c個類的初始中心;
(2)在第k次迭代中,對任意一個樣本,求其到c各中心的距離,將該樣本歸到距離最短的中心所在的類;
(3)利用均值等方法更新該類的中心值;
(4)對於全部的c個聚類中心,若是利用(2)(3)的迭代法更新後,值保持不變,則迭代結束,不然繼續迭代。
該算法的最大優點在於簡潔和快速。算法的關鍵在於初始中心的選擇和距離公式。
該算法流程首先從n個數據對象任意選擇 k 個對象做爲初始聚類中心;而對於所剩下其它對象,則根據它們與這些聚類中心的類似度(距離),分別將它們分配給與其最類似的(聚類中心所表明的)聚類;而後再計算每一個所獲新聚類的聚類中心(該聚類中全部對象的均值);不斷重複這一過程直到標準測度函數開始收斂爲止。通常都採用均方差做爲標準測度函數. k個聚類具備如下特色:各聚類自己儘量的緊湊,而各聚類之間儘量的分開。學習
Bag of words(BOW)模型
最初的Bag of words,也叫作「詞袋」,在信息檢索中,Bag of words model假定對於一個文本,忽略其詞序和語法,句法,將其僅僅看作是一個詞集合,或者說是詞的一個組合,文本中每一個詞的出現都是獨立的,不依賴於其餘詞 是否出現,或者說當這篇文章的做者在任意一個位置選擇一個詞彙都不受前面句子的影響而獨立選擇的。
如今Computer Vision中的Bag of words來表示圖像的特徵描述也是很流行的。大致思想是這樣的,假設有5類圖像,每一類中有10幅圖像,這樣首先對每一幅圖像劃分紅patch(能夠是剛性分割也能夠是像Surf基於關鍵點檢測的),這樣,每個圖像就由不少個patch表示,每個patch用一個特徵向量來表示,咱就假設用SURF表示的,一幅圖像可能會有成百上千個patch,每個patch特徵向量的維數128。
接下來就要進行構建Bag of words模型了,假設Dictionary詞典的Size爲1000,即有1000個詞。那麼我們能夠用K-means算法對全部的patch進行聚類,k=1000,咱們知道,等k-means收斂時,咱們也獲得了每個cluster最後的質心,那麼這1000個質心(維數128)就是詞典裏的1000個詞了,詞典構建完畢。
對於bag of words 和K-means算法這一篇文章也挺容易理解的http://www.cnblogs.com/v-July-v/archive/2011/06/20/2091170.html優化
svm分類器
支持向量機 (SVM) 是一個類分類器,正式的定義是一個可以將不一樣類樣本在樣本空間分隔的超平面。 換句話說,給定一些標記(label)好的訓練樣本 (監督式學習), SVM算法輸出一個最優化的分隔超平面(分類面)。具體能夠參考文章:http://blog.csdn.net/sunanger_wang/article/details/7887218搜索引擎
SURT採用henssian矩陣獲取圖像局部最值仍是十分穩定的,可是在求主方向階段太過於依賴局部區域像素的梯度方向,有可能使得找到的主方向不許確,後面的特徵向量提取以及匹配都嚴重依賴於主方向,即便不大誤差角度也能夠形成後面特徵匹配的放大偏差,從而匹配不成功;另外圖像金字塔的層取得不足夠緊密也會使得尺度有偏差,後面的特徵向量提取一樣依賴相應的尺度,發明者在這個問題上的折中解決方法是取適量的層而後進行插值。
Bag of words方法沒有考慮特徵點的相對位置,而每類物體大都有本身特定的結構,這方面的信息沒有利用起來。用上面一向的類比,就好像搜索引擎只使用了單詞頻率,而沒有考慮句子同樣,沒有結構的分析。
SVM有兩個不足:
(1) SVM算法對大規模訓練樣本難以實施
因爲SVM是藉助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m爲樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的機器內存和運算時間。針對以上問題的主要改進有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、張學工的CSVM以及O.L.Mangasarian等的SOR算法
(2) 用SVM解決多分類問題存在困難
經典的支持向量機算法只給出了二類分類的算法,而在數據挖掘的實際應用中,通常要解決多類的分類問題。能夠經過多個二類支持向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是經過構造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結合其餘算法的優點,解決多類問題的分類精度。如:與粗集理論結合,造成一種優點互補的多類問題的組合分類器。spa
圖像分類的理論就講解到這裏,對於這個圖像分類的代碼的講解請參考下一篇文章。.net