本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤其涉及一種基于網(wǎng)格聚類分析的暴力行為檢測方法。
背景技術(shù):
對(duì)于傳統(tǒng)的利用圖像處理檢測暴力事件的手段中,其核心往往為通過模板匹配,學(xué)習(xí)模型等方法去判斷暴力事件的發(fā)生,由于暴力事件發(fā)生的復(fù)雜性,這種手段的泛用性可能較為不佳,計(jì)算量大。針對(duì)這一情況,有必要設(shè)計(jì)一個(gè)針對(duì)于簡化后的暴力事件模型的檢測算法。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)存在的缺點(diǎn)與不足,本發(fā)明提供一種基于網(wǎng)格聚類分析的暴力行為檢測方法,通過視頻圖像信息計(jì)算多個(gè)運(yùn)動(dòng)物體間的聚合度變化趨勢,以及通過人體檢測,從而判斷是否發(fā)生暴力事件。
為解決上述技術(shù)問題,本發(fā)明提供如下技術(shù)方案:一種基于網(wǎng)格聚類分析的暴力行為檢測方法,包括如下步驟:
s1、從攝像設(shè)備或已有的視頻文件中讀取視頻流,獲取視頻流中的源圖片幀;
s2、將源圖片幀進(jìn)行預(yù)處理;
s3、檢測預(yù)處理后的源圖片幀中的人體,并將檢測到的人體框出;
s4、獲取源圖片幀的光流特征點(diǎn),并對(duì)對(duì)光流特征點(diǎn)進(jìn)行光流追蹤;
s5、對(duì)光流特征點(diǎn)進(jìn)行聚類分析,從而獲得圖像中的運(yùn)動(dòng)物體;
s6、分析運(yùn)動(dòng)物體的運(yùn)動(dòng)情況;
s7、統(tǒng)計(jì)運(yùn)動(dòng)物體在連續(xù)圖像幀中的聚合度變化趨勢,用來判斷暴力事件的檢測。
進(jìn)一步地,所述步驟s2的預(yù)處理,包括圖像增益處理、圖像灰度化處理、直方圖均衡化處理以及圖像平滑處理;
其中,所述圖像增益處理具體為調(diào)節(jié)圖像的對(duì)比度與亮度,公式如下:
g(i,j)=αf(i,j)+β
式中,f(x)為源圖像像素,g(x)為輸出圖像像素,α用于控制對(duì)比度,β用于控制亮度;
所述圖像灰度化處理具體使用加權(quán)平均法將彩色圖像轉(zhuǎn)化為灰度圖像,公式為:
(i,j)=0.30r(i,j)+0.59g(i,j)+0.11b(i,j)
式中,f、r、g、b分別表示輸出的灰度值以及輸入的r、g、b分量;
所述直方圖均衡化處理用于將原圖像所有像素點(diǎn)的灰度分布從集中在某一區(qū)域均衡拉伸到整個(gè)灰度分布區(qū)域中,具體為:先對(duì)圖像進(jìn)行直方圖計(jì)算,得到灰度圖灰度分布的概率分布函數(shù)p(x),由此函數(shù)計(jì)算累積概率分布函數(shù)c(x),最后利用累積概率分布函數(shù)對(duì)原始分布做均衡化拉伸得到新的分布,具體公式為:
設(shè)概率分布函數(shù)為p(x),累積概率分布函數(shù)為:
式中,s為某一灰度值;
所述圖像平滑處理具體使圖片去噪平滑,公式為:
利用高斯公式在二維上的形式計(jì)算出權(quán)重矩陣后,將這一權(quán)重矩陣與圖像作卷積則得到模糊后的圖像。
進(jìn)一步地,所述步驟s3中檢測預(yù)處理后的源圖片幀中的人體,具體通過使用lbp分類器和haar分類器,達(dá)到對(duì)人體目標(biāo)追蹤的目的,具體步驟為:
(1)預(yù)先制作人體樣本,并將其使用lbp分類器和haar分類器進(jìn)行訓(xùn)練:
人將體樣本分為正樣本與負(fù)樣本,正樣本即為人體的圖片,負(fù)樣本則為其他圖片;
原始的lbp特征定義在一個(gè)3*3的窗口內(nèi),以中心的灰度值為基準(zhǔn),相鄰的8個(gè)像素值分別與中心像素值作比較,若相鄰像素值比中心像素值大,則該位置的被標(biāo)記為1,否則為0;由此則產(chǎn)生8位二進(jìn)制數(shù),并將其稱為該中心像素點(diǎn)的lbp值。
haar特征是由矩陣特征模板表示,其包括若干全等的黑色矩陣和白色矩陣,矩特征值是白色矩陣的灰度值減去黑色矩陣像素值的和;
不同的物體有著不同的特征值,于是通過訓(xùn)練特征值獲得人體圖像的特征,在經(jīng)過一定樣本量的訓(xùn)練后,將人體圖像與非人體圖像通過特征值的區(qū)別分類出來;
在得到這個(gè)分類器后,新的人體圖像也能被這個(gè)分類器所檢測出來;
(2)將訓(xùn)練好的人體樣本生成各自的xml文件,然后通過opencv的函數(shù)以及類的調(diào)用載入xml文件,對(duì)預(yù)處理后的源圖片幀進(jìn)行人體檢測;
(3)將檢測到的人體在圖片中用矩形框標(biāo)注出來。
進(jìn)一步地,所述步驟s4,其具體為:
使用lucas-kanade光流算法處理圖像,獲取源圖片幀的光流特征點(diǎn):
lucas-kanade光流算法是一種兩幀差分的光流估計(jì)算法,假設(shè)在一個(gè)小矩形窗口內(nèi)其光流保持恒定,對(duì)相鄰的兩幀圖像,若序列圖像獲取的時(shí)間間隔很短,且場景和光照條件變化緩慢,那么它們將滿足灰度恒定約束,得到式:
i(μ,ν,k)=i(μ+ε,ν+η,k+1)
式中,i(μ,ν,k)表示第k幀圖像,i(μ,ν,k+1)表示第k+1幀圖像;
根據(jù)上式,令i(x)=i(μ,ν,k)、j(x+d)=i(μ+ε,ν+η,k+1),得到目標(biāo)函數(shù)為:
式中,w表示一個(gè)小矩形窗口,d表示光流;
通過最小化殘差e來得到光流d的估計(jì)值,得到式下式:
將j(x+d)按泰勒級(jí)數(shù)展開并線性逼近,代入上式中,得到光流d的估計(jì)值,如下式所示:
lucas-kanade光流算法通過計(jì)算局部區(qū)域的光流來獲得目標(biāo)的運(yùn)動(dòng)狀態(tài)。
進(jìn)一步地,所述步驟s5中對(duì)光流特征點(diǎn)進(jìn)行聚類分析,具體為:
將圖片幀劃分網(wǎng)格,設(shè)劃分比例為n,h、w分別為圖像幀的高度與寬度,m×n是網(wǎng)格的總個(gè)數(shù),得到:
設(shè)b(i,j)為行序號(hào)為i(i<m),列序號(hào)為j(j<n)網(wǎng)格內(nèi)所存在光流點(diǎn)的數(shù)目,p(i)為這一圖像幀檢測到的光流特征點(diǎn),一共有s個(gè),δ(p(u))為判定光流點(diǎn)p(u)是否在序號(hào)為i、j的網(wǎng)格內(nèi),最后累加后則得到每個(gè)網(wǎng)格內(nèi)光流點(diǎn)的個(gè)數(shù)b(i,j):
進(jìn)一步地,所述步驟s6,具體為:
遍歷b(i,j),設(shè)運(yùn)動(dòng)物體判定閾值為k,存在b(i,j)>k時(shí),以i,j序號(hào)的網(wǎng)格位置作為該運(yùn)動(dòng)物體的位置,從而在這一幀圖像中提取數(shù)個(gè)運(yùn)動(dòng)物體的位置,計(jì)算運(yùn)動(dòng)物體之間的最遠(yuǎn)距離,以這個(gè)最遠(yuǎn)距離表示運(yùn)動(dòng)物體的聚合度;
其中,在計(jì)算運(yùn)動(dòng)物體間的距離時(shí),當(dāng)需要判定的運(yùn)動(dòng)物體數(shù)目不多,直接計(jì)算所有運(yùn)動(dòng)物體間的距離d(x,y),x,y為運(yùn)動(dòng)物體,得到聚合度p:
p=max{d(x,y)}
當(dāng)需要判定的運(yùn)動(dòng)物體數(shù)目較多時(shí),使用凸包算法與旋轉(zhuǎn)卡殼算法,求出運(yùn)動(dòng)物體間的最遠(yuǎn)距離。
進(jìn)一步地,所述凸包算法,其具體過程為:
在一個(gè)實(shí)數(shù)向量空間v中,對(duì)于給定集合x,所有包含x的凸集的交集s被稱為x的凸包;
x的凸包使用x內(nèi)所有點(diǎn)(x1,x2,x3,…,xn)的線性組合來構(gòu)造;
在給定二維平面上的點(diǎn)集中,所述凸包就是將最外層的點(diǎn)連接起來構(gòu)成的凸多邊型,它能包含點(diǎn)集中所有的點(diǎn)。
進(jìn)一步地,所述旋轉(zhuǎn)卡殼算法,其具體過程為:
不斷旋轉(zhuǎn)凸包,同時(shí)查詢每次旋轉(zhuǎn)后的對(duì)踵點(diǎn),計(jì)算對(duì)踵點(diǎn)間的距離,在旋轉(zhuǎn)計(jì)算完所有對(duì)踵點(diǎn)的距離后,取這些距離的最大值即得到凸包的最長直徑,也就是平面上的兩兩點(diǎn)的最長距離。
進(jìn)一步地,所述s7,其具體為:
在存在物體運(yùn)動(dòng)的圖像序列中,統(tǒng)計(jì)其中每一幀聚合度變化的趨勢,若在連續(xù)的數(shù)秒內(nèi),聚合度有著明顯減小的趨勢,則判定發(fā)生暴力事件,判斷公式為:
式中,s為聚合度,k為聚合度降低趨勢閾值。
采用上述技術(shù)方案后,本發(fā)明至少具有如下有益效果:
1、相比以往的公共場合暴力檢測手段,本發(fā)明的精度更高,反應(yīng)速度更快。
2、本發(fā)明采用了機(jī)器檢測與人工檢測結(jié)合的方法,不僅能通過算法檢測暴力事件的發(fā)生,還提供了人體的檢測技術(shù)以便監(jiān)測人員更好的獲得監(jiān)控現(xiàn)場的狀況,提高了本檢測方法的穩(wěn)定性。
附圖說明
圖1是本發(fā)明一種基于網(wǎng)格聚類分析的暴力行為檢測方法的步驟流程圖;
圖2是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟1示意圖;
圖3是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟2示意圖;
圖4是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟3示意圖;
圖5是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟4示意圖;
圖6是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟5示意圖;
圖7是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟6示意圖;
圖8是本發(fā)明實(shí)施例凸包構(gòu)建中g(shù)raham掃描法步驟7示意圖;
圖9是本發(fā)明實(shí)施例中旋轉(zhuǎn)卡殼算法查詢凸包得到最長直徑的時(shí)刻示意圖;
圖10是本發(fā)明實(shí)施例中旋轉(zhuǎn)卡殼算法查詢每次旋轉(zhuǎn)的對(duì)踵點(diǎn)對(duì)的距離示意圖。
具體實(shí)施方式
需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互結(jié)合,下面結(jié)合附圖和具體實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)說明。
如圖1所示,本發(fā)明公開了一種基于網(wǎng)格聚類分析的暴力行為檢測方法,其主要步驟共有7步,分別是源圖像幀的獲取、圖像預(yù)處理、人體檢測、光流追蹤、對(duì)光流特征點(diǎn)進(jìn)行聚類分析、運(yùn)動(dòng)物體判斷以及暴力事件判定,下面對(duì)每一步驟進(jìn)行詳細(xì)的描述。
1、源圖片幀的獲?。簭臄z像頭設(shè)備或已有視頻文件中讀取視頻流,獲取其中的源圖片幀。
2、圖像預(yù)處理:將源圖片進(jìn)行去噪、平滑、增益以及灰度等處理,供后續(xù)的人體檢測以及光流追蹤處理:
(1)圖像增益:調(diào)節(jié)圖像的對(duì)比度與亮度,用如下公式:
g(i,j)=αf(i,j)+β
其中f(x)為源圖像像素,g(x)為輸出圖像像素,通常用α控制對(duì)比度、β控制亮度;
(2)圖像灰度化處理:使用加權(quán)平均法將彩色圖像轉(zhuǎn)化為灰度圖像,用如下公式:
f(i,j)=0.30r(i,j)+0.59g(i,j)+0.11b(i,j)
式中,f、r、g、b分別表示輸出的灰度值以及輸入的r、g、b分量;
(3)直方圖均衡化處理:均衡化分布用于將原圖像所有像素點(diǎn)的灰度分布從集中在某一區(qū)域均衡拉伸到整個(gè)灰度分布區(qū)域中;
具體步驟為:先對(duì)圖像進(jìn)行直方圖計(jì)算,得到灰度圖灰度分布的概率分布函數(shù)p(x),由此函數(shù)計(jì)算累積概率分布函數(shù)c(x),最后利用累積概率分布函數(shù)對(duì)原始分布做均衡化拉伸得到新的分布;
設(shè)概率分布函數(shù)為p(x),累積概率分布函數(shù):
其中,s為某一灰度值;
(4)圖像平滑處理,使圖片去噪平滑,公式為:
利用高斯公式在二維上的形式計(jì)算出權(quán)重矩陣后,將這一權(quán)重矩陣與圖像作卷積則得到模糊后的圖像。
3、人體檢測:通過使用lbp和haar分類器,達(dá)到對(duì)人體目標(biāo)追蹤的目的,而不是普通的任意物體的目標(biāo)追蹤,具體為:
(1)首先是要自己制作訓(xùn)練樣本(因?yàn)楸卷?xiàng)目是對(duì)人體的追蹤,所以要制作人體的樣本,至少3000張以上的樣本訓(xùn)練效果比較好)供后續(xù)的lbp和haar分類器使用,并且用制作好的樣本進(jìn)行訓(xùn)練;
(2)分類器訓(xùn)練好以后,將會(huì)生成各自的xml文件,然后就可以通過opencv的函數(shù)以及類的調(diào)用載入xml文件,對(duì)圖片進(jìn)行人體檢測;
(3)將檢測到的人體在圖片中用矩形框標(biāo)注出來。
4、光流追蹤:
(1)圖像灰度化處理;
(2)使用基于圖像金字塔的lucas-kanade光流算法處理圖像,獲取光流特征點(diǎn):lucas-kanade光流算法是一種兩幀差分的光流估計(jì)算法,假設(shè)在一個(gè)小矩形窗口內(nèi)其光流保持恒定,對(duì)相鄰的兩幀圖像,若序列圖像獲取的時(shí)間間隔很短,且場景和光照條件變化緩慢,那么它們將滿足灰度恒定約束,得到式(1):
i(μ,ν,k)=i(μ+ε,ν+η,k+1)(1)
式中,i(μ,ν,k)表示第k幀圖像,i(μ,ν,k+1)表示第k+1幀圖像;
根據(jù)式(1),令i(x)=i(μ,ν,k),j(x+d)=i(μ+ε,ν+η,k+1),得到目標(biāo)函數(shù)如式(2):
式中,w表示一個(gè)小矩形窗口,d表示光流;
通過最小化殘差e來得到光流d的估計(jì)值,得到式(3):
將j(x+d)按泰勒級(jí)數(shù)展開并線性逼近,代入式(3)中,得到光流d的估計(jì)值,如式(4)所示:
lucas-kanade光流算法通過計(jì)算局部區(qū)域的光流來獲得目標(biāo)的運(yùn)動(dòng)狀態(tài)。
5、對(duì)光流特征點(diǎn)進(jìn)行聚類分析:
以圖像幀劃分網(wǎng)格,設(shè)劃分比例為n,h,、w分別為圖像的高度與寬度,m×n是網(wǎng)格的總個(gè)數(shù),公式為:
設(shè)b(i,j)為行序號(hào)為i(i<m),列序號(hào)為j(j<n)網(wǎng)格內(nèi)所存在光流點(diǎn)的數(shù)目,p(i)為這一圖像幀檢測到的光流特征點(diǎn),一共有s個(gè),δ(p(u))為判定光流點(diǎn)p(u)是否在序號(hào)為i,j的網(wǎng)格內(nèi),是則返回1,否則返回0,公式如下:
6、運(yùn)動(dòng)物體判斷:
遍歷b(i,j),,設(shè)運(yùn)動(dòng)物體判定閾值為k,,存在b(i,j)>k時(shí),以i、j序號(hào)的網(wǎng)格位置作為該運(yùn)動(dòng)物體的位置,從而在這一幀圖像中提取數(shù)個(gè)運(yùn)動(dòng)物體的位置,計(jì)算運(yùn)動(dòng)物體之間的最遠(yuǎn)距離,以這個(gè)最遠(yuǎn)距離表示運(yùn)動(dòng)物體的聚合度;
在計(jì)算運(yùn)動(dòng)物體間的距離時(shí):當(dāng)需要判定的運(yùn)動(dòng)物體數(shù)目不多,直接計(jì)算所有運(yùn)動(dòng)物體間的距離d(x,y),x,y為運(yùn)動(dòng)物體,得到聚合度p:
p=max{d(x,y)}
當(dāng)需要判定的運(yùn)動(dòng)物體數(shù)目較多時(shí),使用凸包與旋轉(zhuǎn)卡殼算法,求出運(yùn)動(dòng)物體間的最遠(yuǎn)距離;
凸包算法:凸包(convexhull)是一個(gè)計(jì)算幾何(圖形學(xué))中的概念;
在一個(gè)實(shí)數(shù)向量空間v中,對(duì)于給定集合x,所有包含x的凸集的交集s被稱為x的凸包;
x的凸包可以用x內(nèi)所有點(diǎn)(x1,...xn)的線性組合來構(gòu)造;
在二維歐幾里得空間中,凸包可想象為一條剛好包著所有點(diǎn)的橡皮圈;
形象地說,給定二維平面上的點(diǎn)集,凸包就是將最外層的點(diǎn)連接起來構(gòu)成的凸多邊型,它能包含點(diǎn)集中所有的點(diǎn);
為構(gòu)建凸包,選用了graham掃描法,時(shí)間復(fù)雜度為o(nlogn);
思想:通過設(shè)置一個(gè)關(guān)于候選點(diǎn)的堆棧s來解決凸包問題;
從起始點(diǎn)開始遍歷,保證每一條邊相對(duì)于上一個(gè)鄰接點(diǎn)都是向左轉(zhuǎn);
如圖2-圖8所示,以下用一個(gè)凸包構(gòu)建的例子來說明這個(gè)graham掃描法的原理:
步驟1、如圖2,p0,p1,p2進(jìn)棧;
步驟2、如圖3,∠p1p2p3向左轉(zhuǎn),所以p2出棧,而∠p0p1p3是向左轉(zhuǎn)所以p1不用出棧,p3進(jìn)棧;
步驟3、如圖4,∠p1p3p4是向右轉(zhuǎn),p4進(jìn)棧;
步驟4、如圖5,∠p3p4p5是向左轉(zhuǎn),p4出棧,∠p1p3p5是向右轉(zhuǎn),p5進(jìn)棧;
步驟5、如圖6,同理,會(huì)出現(xiàn)p6、p7、p8進(jìn)棧;
步驟6、如圖7,遇到p9,會(huì)出現(xiàn)p8、p9出棧,p9進(jìn)棧;
步驟7、如圖8,遇到i=m(12),結(jié)束,凸包形成。
如圖9所示,為旋轉(zhuǎn)卡殼算法查詢凸包得到最長直徑的時(shí)刻。
如圖10所示,為通過旋轉(zhuǎn)卡殼算法查詢每次旋轉(zhuǎn)的對(duì)踵點(diǎn)對(duì)的距離。
可以證明,離散點(diǎn)之間的最長距離點(diǎn)對(duì)必定在凸包上,即最長距離為凸包這個(gè)多邊形的直徑,直徑又由多邊形的平行切線的最遠(yuǎn)距離決定的,所以只需要查詢多邊形的對(duì)踵點(diǎn),計(jì)算出所有對(duì)踵點(diǎn)對(duì)的距離并得到最大值即為所求的最長距離。
此算法的優(yōu)越之處在于隨著邊的旋轉(zhuǎn),對(duì)踵點(diǎn)對(duì)也隨之旋轉(zhuǎn),于是可以快速的得到多邊形的直徑。
7、暴力事件判定:
在存在物體運(yùn)動(dòng)的片段中,統(tǒng)計(jì)其中每一幀聚合度變化的趨勢,若存在一個(gè)連續(xù)的數(shù)秒內(nèi),聚合度有著明顯減小的趨勢,則判定發(fā)生暴力事件:
s為聚合度,k為聚合度降低趨勢閾值。
盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解的是,在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種等效的變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同范圍限定。