摘 要:特征提取一直是模式分類問題中的關鍵步驟,對基于身體碎片外形輪廓及其和人物中心相對位置特征的提取算法進行研究。此算法操作簡單,這些特征是在所有位置和所有大小上提取的,使制作的分類器滿足平移和縮放不變性,并且他還是基于有標注數據庫的。此算法可用于基于物體碎片特征的人臉識別系統、車輛和人體的自動視頻監測系統以及其他的監控系統和圖像檢索中。
關鍵詞:特征提取;濾波器;邊緣檢測;物體碎片特征
中圖分類號:TP391.41文獻標識碼:A
文章編號:1004-373X(2008)08-131-04
Features Extraction Algorithm Research Based on Persons′ Patches
CHENG Lifang,ZHAO Mingchang,ZHANG Xiangwen,HE Ying
(Department of Computer and Control,Guilin ElectronicTechnology University,Guilin,541004,China)
Abstract:Features extraction is always the key step.This article describes the extraction algorithm based on the figure of persons′ patches and correlational location with the center of person.This algorithm can be performed simply.And these features are extracted at all the location and scales.So the classifier made with it is unvaried in translation and scale.And it is also built on the label database.This algorithm can be used in the face recognition system,person and vehicle automated visual surveillance,other surveillancesystem and image searches,which based on the patches feature.
Keywords:features extraction;filter;edge detection;patches feature
特征提取器通常要提取具有如下性質的特征描述,即,來自同一類別的不同樣本的特征值應該非常相近,而來自不同類別樣本的特征值應該有很大的差異。所以提取的特征對于類別信息不相關的變換具有不變性(invariant),而且特征提取比分類更加依賴于具體問題和具體領域,因此相應領域的知識是必需的。在行人檢測過程中,需要對目標圖像進行分析,以判斷其是否為人。在本文所述的算法中,使用特征而不是直接使用原始的像素對人體模式進行建模。特征一般是對待分類對象所擁有的屬性知識進行編碼得到的,就圖像而言,這些知識是從原始像素中很難獲取的。
本文采用人物的身體碎片的幾何外形輪廓及其和人物中心的相對位置作為特征對人物進行檢測,許多文章也用到了類似的方法,比如:基于成分的汽車檢測和人臉檢測方法[1,2],這些方法是先檢測物體的部分成分(這些物體的成分是預先人工標注好的[1]),然后再把這些成分綜合起來檢測物體,并且目前尚無這些方法應用于人物檢測的文獻。下面具體介紹人體碎片的特征提取算法。
1 數據庫簡介
由于本文人物檢測采用的是對人物輪廓有標注的LabelMe數據庫[CD2]對于圖像注釋的數據庫,并且還是基于網絡的。檢測自然界中、混亂圖像中普通的物體類別,是計算機視覺的神圣的任務之一。為了向這個目標前進,最基本的是要有大量具有挑戰性的圖片數據庫。在這些圖片中,地面實況被標注出來以利于公用,這些標注應該提供每個圖片中物體的類別信息,而且還有物體的形狀和位置,另外也可能還有其他的性質,比如,姿態。這個數據庫可以用于測試(算法比較),而且還可用于監督學習的訓練[3]。
這里下載LabelMe的全部數據庫,從此數據庫中提取15 592張帶有人物的圖片,選出30張圖片用于提取人物碎片和背景碎片,并且從每幅圖片提取20張人體碎片和30張背景碎片,并且選取800張用于訓練,其余的圖片用于測試。
2 身體碎片提取的過程
人物身體碎片特征提取的一般過程如圖1所示。
2.1 邊緣檢測
本文采用Canny算子進行邊緣檢測,Canny指出評價邊緣檢測算子性能的3個指標[4]:
(1) 對邊緣點的錯檢率和丟失率要低;
(2) 良好的定位性能,希望檢測出的邊緣點要盡可能地在實際邊緣的中心;
(3) 對單一邊緣要有惟一響應,希望得到的邊界為單像素寬,以便盡可能地抑制虛假邊緣。
圖1 身體碎片特征提取的過程
下面介紹Canny算子的邊緣檢測利用Matlab工具箱函數edge的實現。其具體的語法為[5]:
[g,t]=edge(f′,canny′,T,sigma)
這里f為輸入的圖像,T為一個向量,T=,參數T1和T2分別表示山脊像素值的閾值;這里T1 由圖2(b)圖和圖2(c)可以看出,(c)圖把原圖像的許多細節都給忽略掉了,這不利于后面的碎片提取。為了使碎片特征提取的更加精確,這里選用(b)圖的閾值,即,T取閾值[0.001 0.01],sigma取缺省值1。 圖2 Canny邊緣檢測 2.2 人物閾值模板 由于本文人物檢測采用的是對人物輪廓有標注的LabelMe數據庫。利用人物的輪廓被事先標注出來這一特點,可通過讀取目標人物的(x,y)坐標,通過邏輯運算。即:對于坐標點在輪廓多邊形上或以內的坐標,邏輯為真,否則為假,可得到人物模板如圖3所示。 這里標注的人物的x,y的坐標通過自定義函數LMobjectpolygon[5]獲得,人物的掩模通過Matlab工具箱里的兩個函數來獲得的,即logical和inpolygon,其語法規則為: mask=logical(inpolygon(x,y,X{1},Y{1})) 其中mask表示人物掩模;x和y表示輸入的圖像中的坐標;X{1}和Y{1}表示標注的人物的所有的x坐標和y坐標。inpolygon表示坐標(x,y)在由X{1}和Y{1}所確定的多邊形內或多邊形上,然后用logical來進行邏輯判斷,如果坐標(x,y)在多邊形內或多邊形上就判斷為真,即邏輯賦值為1;否則為假,則邏輯賦值為0,則輸出的圖像為一幅黑白的二值化圖像如圖3所示。 2.3 實現邊緣分割 分割(Segmentation),指的是將圖像分成不同的區域,每個區域對應著一個感興趣的物體,屬于高層次的圖像分析的研究范疇,從輸入圖像得到物體的抽象表示,他是一個很困難的問題,是目前圖像處理、圖像分析中研究的熱點之一。邊緣分割是通過檢測出圖像邊緣,然后再利用閾值分割算法把邊緣分割出來。 閾值分割算法是最簡單,也是最經典、最常用的分割算法之一。即,設定一個閾值T,如果某個像素的灰度值小于或者等于T的話,將這個像素的灰度值置0;否則,將這個像素的灰度值置為255,得到的分割后的圖像是一個二值圖像(Binary Image),只包含2個灰度等級。 本文利用數組乘法來實現邊緣分割,即2幅圖像的對應像素值相乘來實現,這就要求兩幅圖像要大小一樣,本文的圖2(b)和圖3正好滿足這一要求,用Matlab實現為: I=g#8226;mask 其中I為輸出的圖像,如圖4所示。 圖3 人物模板圖4 邊緣分割圖像 由圖4可以看出,這個算法有效地實現了邊緣分割,使人物輪廓上的邊緣清晰可見,為后面碎片特征的提取打下很好的基礎。 2.4 身體碎片特征的提取 2.4.1 簡單特征的組合 由于人體姿態多變,并且所處的環境復雜,有很多復雜的物體和人物處于同一個環境中,比如:樹木、各種車輛、建筑物等,而且外界環境多變,容易受到許多的噪音的影響,使得圖片的質量變差,人物的分辨率變低,要從這樣的圖片中把人物精確的檢測出來,是一件非常困難的事情。這使圖像處理扮演著一個非常重要的角色。 本文把幾個邊緣檢測及圖像增強算子組合在一起,構成一個特征組合,即: {[1],… [1 2 1;0 0 0;-1 -2 -1]/2,… [1 0 -1;2 0 -2;1 0 -1]/2,… [-1 -1 -1;-1 8 -1;-1 -1 -1]} 其中, [1] 表示原圖像,顯示原圖像的特征; [1 2 1;0 0 0;-1 -2 -1]/2表示y梯度方向的Sobel算子,在y方向對圖像進行邊緣增強,增強人物y方向的邊緣特征; [1 0 -1;2 0 -2;1 0 -1]/2表示x梯度方向的Sobel算子,在x方向對圖像進行邊緣增強,增強人物x方向的邊緣特征; [-1 -1 -1;-1 8 -1;-1 -1 -1]表示Laplacian算子,對圖像進行點增強,增強人物中心和選中的興趣點的特征。 這個濾波器組從4個方面對輸入圖像進行處理,幾乎增強了圖像中各個方面的細節,反映了主要的圖像信息,使其泛化能力進一步增強。 2.4.2 提取碎片特征 首先確定從數據庫中選出要創建碎片字典的圖像的數量,這里選出30幅圖像用于創建碎片字典,并從每幅圖像上提取20個小碎片,小碎片的大小從9到25個像素每隔2個像素變化。然后,從上面分割的邊緣圖像上,隨機采樣,即從圖4人物邊緣圖像上隨機選出20個點,這20個點的坐標是已經標注的人物上的坐標。按照這20個點確定的坐標,隨機選取小碎片的大小,從被濾波器組濾波的圖像上切割出小碎片。 具體在Matlab中的實現步驟如下: (1) 利用find函數找到邊緣圖像上的點(xo,yo),其語法如下: [yo,xo]=find(g#8226;mask) 在圖像4的邊緣分割圖像上找到一系列的邊緣點。 (2) 把這些邊緣上的點任意排列,利用確定的小碎片的數量,對這些點進行索引。 (3) 利用函數rand——表示均勻分布的隨機值,實現對小碎片大小的隨機采樣。如果用p表示采樣的小碎片的大小,則從通過convCrossConv函數[6]濾波的4張二維圖像(用out表示)上切割的小碎片如式(1)所示: patch=double(out(yo(lp)-p/2:yo(lp)+ p/2,xo(lp)-p/2:xo(lp)+p/2,lf))(1) 這里lp表示從1到每幅圖像提取的碎片的數量(這里為20)進行變化。lf表示從1到濾波器組的數量(這里為4)變化,表示用從對應的濾波器濾波的圖像上采樣,可以用圖5來表示,其中點b(xo(lp),yo(lp))為人物邊緣分割圖像上的點。然后,隨機選取這些碎片,建立人物碎片圖片庫,如圖6所示為人物身體碎片圖片庫的部分碎片。 圖5 切割小碎片 圖6 部分身體碎片 2.5 提取碎片和人體中心的相對位置圖像 由于本文介紹的人物檢測要利用身體碎片對身體中心位置的投票,所以確定人物身體碎片相對于人物身體中心的位置就顯得非常重要。這里利用二維可分離濾波器確定身體碎片相對于身體中心的位置。其具體的操作步驟如下: (1) 由lp從1到每幅圖像提取的碎片的數量(這里為20)進行變化來控制一個循環,以保證遍歷每幅圖像提取的碎片。 (2) 確定碎片相對于人物中心位置的寬度Lx,和高度Ly,即Lx=2|xo(lp)-cx|+1,Ly=2|yo(lp)-cy|+1,這里xo,yo表示人物身體上的坐標;cx,cy表示人物身體中心的坐標。如圖7所示。 (3) 然后取Lx大的零向量gx,用Matlab實現的語法為:gx=zeros(1,Lx),并且,gx((Lx+1)/2-(xo(lp)-cx))=1,由此可以看出,當xo(lp)≥cx時,gx(1)=1;當xo(lp) (4) 為了使gx和gy具有低通濾波的作用,現選取空域濾波器:locSigma=e-(-7:7)2/72和gx,gy分別卷積,并把卷積結果分別賦予gx和gy,用Matlab的語法實現為: gx=conv(gx,locSigma), gy=conv(gy,locSigma) 這里conv為Matlab的卷積函數。這里用到一個條件語句,如果size(gx) 最后,把上述提取的2 400個身體碎片特征及其和身體中心的相對位置以及原圖像的索引都存儲在碎片字典中,以利于后面的進一步處理。 3 結 語 本文詳細介紹了人物身體碎片特征的提取過程,以及邊緣檢測和邊緣分割算法,提出利用簡單特征的組合濾波器和二維可分離濾波器來對圖像進行濾波,這個圖像處理方法也可用于其他的特征提取器中。 圖7 碎片和人物中心的相對位置 圖8 部分碎片和人體中心的相對位置圖像 從模式分類的角度來說,利用特征對目標進行建模有利于減小同類目標對象的類內距離,增加分類對象之間的類間距離。 使用特征相比于像素更有利于建立判別函數,從而得到更好的分類結果。在模式分類問題研究的發展過程中,特征的提取扮演著越來越重要的角色。 參 考 文 獻 [1]Leung B.Componentbased Car Detection in Street Scene Images[D].EECS,MIT,2004. [2]Heisele B,Serre T,Pontil M,et al.Componentbased Face Detection[C].IEEE Conference on Computer Vision and Pattern Recognition,Hawaii,2001(1):657662. [3]Rivlin E,Rudzsky M,Goldenberg R,et al.A RealTime System for Classification of Moving Objects[J].In Proc.16th Int′l Conf.on Pattern Recognition.Quebec City,Quebec,2002,3:688691. [4]Qiang Zhu,Shai Avidan,MeiChen Yeh,et al.Fast Human Detection Using a Cascade of Histograms of Oriented Gradients[C].IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2006,2:1 4911 498. [5]Rafael C Gonzalez,Richard E Woods,Steven L Eddins.Digital Image Processing Using MATLAB[M].北京:電子工業出版社,2004. [6]http://people.csail.mit.edu/torralba/shortCourseRLOC/boosting/boosting.html.[HJ0] 作者簡介 程麗芳 女,1974年出生,山東東明人,桂林電子科技大學碩士研究生。主要研究方向為模式識別與智能控制。 趙明昌 男,1977年出生,河南新鄭人,副研究員,中科院自動化所博士后。主要研究方向為模式識別、圖像圖形學。 注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文