畢業(yè)設(shè)計(jì)--基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  摘要</b></p><p>  隨著越來越多的視頻文件出現(xiàn)在人們的生活中,如何有效處理它們成為亟需解決的問題。本論文以基于人臉的視頻挖掘?yàn)檠芯糠较?,目的是通過分析大量視頻文件,得到視頻內(nèi)部隱含的深層信息。具體的原理是:首先對視頻集進(jìn)行幀提取和預(yù)處理,得到較為清晰的含人臉圖像;然后進(jìn)行面部特征提取,得到眼睛、鼻子、嘴、眉的相對位置;最后對得到的特征值進(jìn)行處理,根

2、據(jù)加權(quán)的歐式距離計(jì)算出相似度,從而實(shí)現(xiàn)基于人臉的視頻挖掘。本系統(tǒng)已可以初步完成基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘,然其準(zhǔn)確度有待提高。</p><p>  關(guān)鍵詞:視頻挖掘,面部特征提取,幾何特征識別 </p><p><b>  Abstract</b></p><p>  As more and more video files appear in

3、 people's life, how to effectively deal with them as a need to solve the problem.In this paper, based on human face video mining as the research direction, purpose is through the analysis of a large number of video f

4、iles, get video hidden deep inside information.Specific principle is: the first frame of video sets are extracted and preprocessing, get a clear face image;Facial feature extraction, and then to the relative position of

5、the eyes, nose, mouth, eye</p><p><b>  目錄</b></p><p><b>  第一章緒論5</b></p><p><b>  1.1背景5</b></p><p><b>  1.2算法簡介6</b>

6、</p><p>  1.3論文主要內(nèi)容6</p><p>  1.4論文結(jié)構(gòu)安排7</p><p>  第二章系統(tǒng)的概要設(shè)計(jì)7</p><p>  2.1系統(tǒng)的解決方案7</p><p>  2.2系統(tǒng)的流程圖7</p><p>  2.3視頻預(yù)處理方案8</p>

7、<p>  2.4人臉檢測方案8</p><p>  2.5視頻挖掘方案9</p><p>  第三章視頻預(yù)處理9</p><p>  3.1視頻預(yù)處理9</p><p><b>  3.2幀提取9</b></p><p>  3.3光線補(bǔ)償技術(shù)9</p>&

8、lt;p>  3.4高斯平滑技術(shù)9</p><p>  3.5圖片灰度化10</p><p>  3.6灰度均衡技術(shù)10</p><p>  3.7對比度增強(qiáng)技術(shù)10</p><p>  3.8圖片尺寸縮放10</p><p>  第四章特征提取10</p><p>  4.

9、1特征提取10</p><p>  4.2特征提取方案11</p><p>  4.3Haar分類器算法11</p><p>  4.4Haar特征11</p><p>  4.5AdaBoost算法12</p><p>  4.6特征提取13</p><p>  4.7特征處理(標(biāo)

10、準(zhǔn)化特征值)13</p><p>  第五章視頻挖掘13</p><p>  5.1視頻挖掘14</p><p>  5.2視頻挖掘方案14</p><p>  5.3標(biāo)準(zhǔn)化特征值計(jì)算14</p><p>  5.4數(shù)據(jù)庫檢索15</p><p>  5.5獲取對應(yīng)視頻文件15&

11、lt;/p><p>  第六章系統(tǒng)測試及運(yùn)行結(jié)果15</p><p>  6.1測試原則15</p><p>  6.2測試方案及結(jié)果15</p><p>  6.2.1視頻文件的預(yù)處理15</p><p>  6.2.2人臉檢測和臉部器官檢測16</p><p>  6.2.3人視頻挖

12、掘17</p><p>  第七章結(jié)束語17</p><p>  7.1應(yīng)用程序特點(diǎn)17</p><p>  7.2心得體會18</p><p>  7.3未來展望18</p><p><b>  參考文獻(xiàn)18</b></p><p><b>  附

13、錄19</b></p><p>  視頻預(yù)處理代碼19</p><p>  圖像預(yù)處理代碼21</p><p><b>  人臉檢測代碼21</b></p><p>  人臉器官(人眼)識別代碼24</p><p><b>  致謝26</b><

14、/p><p><b>  緒論</b></p><p><b>  1.1背景</b></p><p>  目前,越來越多的圖像和視頻出現(xiàn)在人們的生活中,如何有效的管理和分析這些多媒體數(shù)據(jù)成為一個急需解決的問題。對于視頻的處理和分類,有助于我們分析出多媒體數(shù)據(jù)和人物的依賴關(guān)系,從而揭示視頻文件中更深層的意義。</p>

15、;<p>  同時(shí)隨著數(shù)字信號處理理論和生物識別的發(fā)展,生物識別技術(shù)廣泛應(yīng)用于各種系統(tǒng),包括物理訪問控制和計(jì)算機(jī)用戶賬戶安全等。其中生物識別技術(shù)中人臉識別占有重要地位,和其他生物識別方法(指紋識別、虹膜識別和聲音識別)相比,人臉識別具有識別簡單方便、用戶體驗(yàn)良好等特點(diǎn),因?yàn)樗恍枰眢w接觸圖像捕捉設(shè)備(相機(jī)),不需要任何先進(jìn)的硬件。人臉識別現(xiàn)在主要應(yīng)用于安全領(lǐng)域、考勤、身份驗(yàn)證等反面。 </p><p&

16、gt;  本文使用的基于OpenCV的人臉幾何特征識別方法在在基于大數(shù)據(jù)的視頻挖掘中,可以通過人臉特征匹配找到與指定人物相關(guān)的視頻,從而挖掘出視頻的深層次信息。</p><p><b>  1.2算法簡介</b></p><p>  基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘系統(tǒng)的關(guān)鍵在于是否擁有頂尖的核心算法,和識別結(jié)果是否擁有準(zhǔn)確的識別率和快速的識別速度。視頻挖掘主要依靠的是人臉

17、識別算法,常見的人臉識別方法有:面部幾何特征法、模板匹配法、神經(jīng)網(wǎng)絡(luò)法、隱馬爾科夫模型法、支持向量機(jī)制法、特征臉法、奇異值分解法、貝葉斯分類法和等灰度線法等。</p><p>  本文主要使用的是Haar分類器算法和基于面部幾何特征的方法來解決視頻分析問題。利用Haar特征分類器和AdaBoost算法來定位人臉,和提取出人臉的特定器官(兩個眼角、鼻尖、兩個嘴角、兩個眉角)的相對位置?;诿娌繋缀翁卣魉惴ǖ幕舅枷?/p>

18、是根據(jù)臉部特征點(diǎn)(如眉毛,眼角,嘴角,鼻子等)的相對位置、形狀、分布的幾何參數(shù)作為特征,再結(jié)合人臉輪廓獲得一組能夠體現(xiàn)各個特征點(diǎn)之間關(guān)系的特征向量,從而對人臉進(jìn)行分類。</p><p><b>  1.3論文主要內(nèi)容</b></p><p>  本文主要介紹了基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘的解決方案。通過對視頻的幀提取、圖片預(yù)處理、人臉檢測、人臉識別,最終對視頻信息進(jìn)行挖

19、掘及搜索。</p><p>  首先對視頻文件進(jìn)行預(yù)處理得到人臉圖片,然后對人臉進(jìn)行幾何特征提取,得到基于七個特征點(diǎn)(兩個眉毛、兩個眼角、兩個嘴角、鼻子尖角)的相對位置的特征值,最后把得到的特征信息作為視頻文件的標(biāo)簽存儲到數(shù)據(jù)庫中,以方便之后的視頻文件檢索。</p><p><b>  1.4論文結(jié)構(gòu)安排</b></p><p>  本論文總體

20、結(jié)構(gòu)如下:</p><p><b>  第一章為緒論;</b></p><p>  第二章主要介紹了系統(tǒng)的概要設(shè)計(jì)和解決方案;</p><p>  第三章簡要介紹了視頻預(yù)處理的解決方案和理論基礎(chǔ);</p><p>  第四章主要介紹了特征提取的解決方案和理論基礎(chǔ);</p><p>  第五章主要介

21、紹了視頻挖掘的解決方案和理論基礎(chǔ);</p><p>  第六章主要講述了實(shí)驗(yàn)的測試流程和運(yùn)行結(jié)果;</p><p><b>  第七章是結(jié)束語.</b></p><p><b>  系統(tǒng)的概要設(shè)計(jì)</b></p><p>  2.1系統(tǒng)的解決方案</p><p>  基于人物

22、的相關(guān)網(wǎng)絡(luò)視頻挖掘的主要步驟如下:</p><p>  首先進(jìn)行視頻的預(yù)處理。從視頻文件中提取出幀圖片,然后對幀圖片進(jìn)行理,包括:光線補(bǔ)償技術(shù)、高斯平滑技術(shù)、圖片灰度化、灰度均衡技術(shù)、對比度增強(qiáng)技術(shù)和圖片尺寸縮放。</p><p>  然后進(jìn)行人臉特征提取。從人臉圖像中提取出特征點(diǎn):包括兩個眼角、鼻尖、兩個嘴角、兩個眉角。將特征點(diǎn)的相對位置保存為特征值,然后進(jìn)行特征值標(biāo)準(zhǔn)化。</p&

23、gt;<p>  最后進(jìn)行視頻挖掘。將樣本的標(biāo)準(zhǔn)化特征值與數(shù)據(jù)庫中的標(biāo)準(zhǔn)化特征值進(jìn)行加權(quán)歐式距離運(yùn)算,運(yùn)算結(jié)果即為相似度。相似度在規(guī)定閥值內(nèi)的視頻文件即為要查找的視頻文件。</p><p><b>  2.2系統(tǒng)的流程圖</b></p><p>  2.3視頻預(yù)處理方案</p><p>  主要使用OpenCV的視頻處理接口,從視

24、頻文件提取出每一幀的圖像,并進(jìn)行圖像的優(yōu)化處理,以方便進(jìn)行人臉檢測和識別。</p><p><b>  2.4特征提取方案</b></p><p>  基于知識的方法主要利用先驗(yàn)知識將人臉看作器官特征的組合,根據(jù)眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之間的幾何位置關(guān)系來檢測人臉。然后把這些特征點(diǎn):包括兩個眼角、鼻尖、兩個嘴角、兩個眉角的相對位置保存為特征值,然后進(jìn)

25、行特征值標(biāo)準(zhǔn)化。</p><p>  把彩色圖片轉(zhuǎn)化為灰度圖可以降低數(shù)據(jù)量,然后將對比度增高,可以使圖片明暗區(qū)分更加明顯,從而使圖片更容易被算法識別出來。然后利用OpenCV自帶的Haar特征來分類器,可以快速的提取出人臉器官。</p><p><b>  2.5視頻挖掘方案</b></p><p>  我們采用基于人臉的幾何特征識別方案進(jìn)行人

26、臉識別,即通過OpenCV的分類器定位出人臉器官的七個特征點(diǎn),即四個眼角點(diǎn)、鼻尖點(diǎn)和兩個嘴角點(diǎn),利用它們的相對位置和角度確定十個特征向量,并對其進(jìn)行運(yùn)算。用加權(quán)函數(shù)來計(jì)算特征相似度,通過設(shè)定閥值來確保準(zhǔn)確率。然后與數(shù)據(jù)庫中預(yù)存的特征進(jìn)行匹配,從而得出相關(guān)人物的視頻文件。</p><p><b>  視頻預(yù)處理</b></p><p><b>  3.1視頻預(yù)

27、處理</b></p><p>  視頻預(yù)處理的主要步驟:實(shí)現(xiàn)從視頻文件提取出幀圖片,然后對幀圖片進(jìn)行理,包括:光線補(bǔ)償技術(shù)、高斯平滑技術(shù)、圖片灰度化、灰度均衡技術(shù)、對比度增強(qiáng)技術(shù)和圖片尺寸縮放。流程圖如下圖:</p><p><b>  3.2幀提取</b></p><p>  從視頻文件中提取幀圖片,根據(jù)OpenCV提供的函數(shù)對視

28、頻文件進(jìn)行幀提取,本系統(tǒng)對視頻文件處理后,將每一幀存儲為jpg文件。</p><p><b>  3.3光線補(bǔ)償技術(shù)</b></p><p>  因?yàn)樵诓煌沫h(huán)境中,光線對圖像會產(chǎn)生干擾,圖像就會變得或明或暗,我們就要對其進(jìn)行調(diào)整,所以采用光線補(bǔ)償來處理圖像的亮度變化。</p><p><b>  3.4高斯平滑技術(shù)</b>

29、;</p><p>  在視頻圖像的采集過程中,由于外界條件的干擾,則采集的圖片中會出現(xiàn)一些噪音,這就會使圖像在進(jìn)行轉(zhuǎn)化、識別時(shí)發(fā)生的數(shù)據(jù)的遺失和損壞等,這些會對以后圖片的訓(xùn)練產(chǎn)生干擾,所以將圖片進(jìn)行平滑處理來消除噪聲的干擾。</p><p><b>  3.5圖片灰度化</b></p><p>  進(jìn)行灰度轉(zhuǎn)換時(shí),我們要保證圖像信息保持不變。

30、我們在使用灰度轉(zhuǎn)換時(shí),先對圖像數(shù)據(jù)進(jìn)行統(tǒng)計(jì),經(jīng)過比較后得出一個合適的灰度值,然后對圖像進(jìn)行灰度變換。</p><p><b>  3.6灰度均衡技術(shù)</b></p><p>  經(jīng)過灰度轉(zhuǎn)換后,就要進(jìn)行灰度均衡化操作,最后通過灰度分布來對圖像進(jìn)行灰度均衡。</p><p>  3.7對比度增強(qiáng)技術(shù)</p><p>  通

31、過對某個圖片的點(diǎn)進(jìn)行定位,然后將其周圍的像素值進(jìn)行統(tǒng)計(jì),再通過聚集技術(shù)將相鄰的像素值拉開,使他們之間的差距拉大。</p><p><b>  3.8圖片尺寸縮放</b></p><p>  把處理后的圖片縮放到固定的尺寸,從而保證圖像信息的一致性,提升計(jì)算速度和準(zhǔn)確度。</p><p><b>  特征提取</b><

32、/p><p><b>  4.1特征提取</b></p><p>  特征提取的主要步驟:首先根據(jù)Haar分類器和Adaboost算法進(jìn)行人臉檢測和面部器官進(jìn)行特征提取,然后對得到的特定器官(眼角、鼻尖、嘴角、眉角)的位置進(jìn)行處理,最終得到人臉的標(biāo)準(zhǔn)化特征值。流程圖如下:</p><p><b>  4.2特征提取方案</b>

33、</p><p>  我們使用基于人臉的幾何特征識別算法進(jìn)行特征提取。首先利用Haar特征分類器和AdaBoost算法來定位人臉,和提取出人臉的特定器官:兩個眼角、鼻尖、兩個嘴角、兩個眉角。最后計(jì)算它們的相對位置從而得出人臉的幾何特征值,最后通過特征值的運(yùn)算得到相似臉。</p><p>  4.3Haar分類器算法</p><p>  Haar分類器算法的主要步驟包

34、括:</p><p>  使用Haar-like特征做檢測。</p><p>  使用積分圖(Integral Image)對Haar-like特征求值進(jìn)行加速。</p><p>  使用AdaBoost算法訓(xùn)練區(qū)分人臉和非人臉的強(qiáng)分類器。</p><p>  使用篩選式級聯(lián)把強(qiáng)分類器級聯(lián)到一起,提高準(zhǔn)確率。</p>

35、<p><b>  4.4Haar特征</b></p><p>  AdaBoost算法的實(shí)現(xiàn),采用的是輸入圖像的矩形特征,也叫Haar特征。下面簡要介紹矩形特征的特點(diǎn)。</p><p>  影響Adaboost檢測訓(xùn)練算法速度很重要的兩方面是特征的選取和特征值的計(jì)算。臉部的一些特征可以由矩形特征簡單地描繪。用下圖示范:</p><p&g

36、t;  上圖中兩個矩形特征,表示出人臉的某些特征。比如中間一幅表示眼睛區(qū)域的顏色比臉頰區(qū)域的顏色深,右邊一幅表示鼻梁兩側(cè)比鼻梁的顏色要深。同樣,其他目標(biāo),如眼睛等,也可以用一些矩形特征來表示。使用特征比單純地使用像素點(diǎn)具有很大的優(yōu)越性,并且速度更快。</p><p>  在給定有限的數(shù)據(jù)情況下,基于特征的檢測能夠編碼特定區(qū)域的狀態(tài),而且基于特征的系統(tǒng)比基于象素的系統(tǒng)要快得多。矩形特征對一些簡單的圖形結(jié)構(gòu),比如邊緣

37、、線段,比較敏感,但是其只能描述特定走向(水平、垂直、對角)的結(jié)構(gòu),因此比較粗略。如上圖,臉部一些特征能夠由矩形特征簡單地描繪,例如,通常,眼睛要比臉頰顏色更深;鼻梁兩側(cè)要比鼻梁顏色要深;嘴巴要比周圍顏色更深。</p><p>  4.5AdaBoost算法</p><p>  Adaboost是一種迭代算法,其核心思想是針對同一個訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合

38、起來,構(gòu)成一個更強(qiáng)的最終分類器(強(qiáng)分類器)。</p><p><b>  整個過程如下所示:</b></p><p>  1. 先通過對N個訓(xùn)練樣本的學(xué)習(xí)得到第一個弱分類器;</p><p>  2. 將分錯的樣本和其他的新數(shù)據(jù)一起構(gòu)成一個新的N個的訓(xùn)練樣本,通過對這個樣本的學(xué)習(xí)得到第二個弱分類器 ;</p><p> 

39、 3. 將1和2都分錯了的樣本加上其他的新樣本構(gòu)成另一個新的N個的訓(xùn)練樣本,通過對這個樣本的學(xué)習(xí)得到第三個弱分類器;</p><p>  4. 最終經(jīng)過提升的強(qiáng)分類器 。即某個數(shù)據(jù)被分為哪一類要通過 , ……的多數(shù)表決。</p><p>  其算法本身是通過改變數(shù)據(jù)分布來實(shí)現(xiàn)的,它根據(jù)每次訓(xùn)練集之中每個樣本的分類是否正確,以及上次的總體分類的準(zhǔn)確率,來確定每個樣本的權(quán)值。</p>

40、;<p>  將修改過權(quán)值的新數(shù)據(jù)集送給下層分類器進(jìn)行訓(xùn)練,最后將每次訓(xùn)練得到的分類器最后融合起來,作為最后的決策分類器。使用adaboost分類器可以排除一些不必要的訓(xùn)練數(shù)據(jù)特徵,并將關(guān)鍵放在關(guān)鍵的訓(xùn)練數(shù)據(jù)上面。</p><p><b>  4.6特征提取</b></p><p>  利用OpenCV提供的人臉檢測分類器獲取人臉的特定器官:眼角、鼻尖、

41、嘴角、眉角。例如:根據(jù)OpenCV提供的人眼檢測分類器:"haarcascade_eye.xml",可以檢測出人眼位置。然后記錄下人眼的大小和相對位置。</p><p>  4.7特征處理(標(biāo)準(zhǔn)化特征值)</p><p>  特征值依次為:左眼的寬度d1、鼻尖到雙眼連線的垂直距離d2,、人臉左右邊界的距離d3、嘴巴的寬度d4、兩眼中心與左嘴角水平距離d5、兩眼外側(cè)的水平

42、距離d6、右眼的外側(cè)眼角與鼻頂?shù)乃骄嚯xd7、左眼的內(nèi)側(cè)眼角與鼻頂?shù)乃骄嚯xd8、嘴巴中點(diǎn)與鼻尖的垂直距離d9、鼻尖與嘴角的距離d10。并將這些距離特征值與眼睛中點(diǎn)到嘴巴終點(diǎn)間垂直距離L之比定義為標(biāo)準(zhǔn)化特征值。</p><p>  標(biāo)準(zhǔn)化特征值:Vi = di/L, i=1,2,3...10</p><p><b>  視頻挖掘</b></p><

43、p><b>  5.1視頻挖掘</b></p><p>  視頻挖掘的主要步驟:首先對人臉圖像樣本的標(biāo)準(zhǔn)化特征值和數(shù)據(jù)庫已有的標(biāo)準(zhǔn)化特征值進(jìn)行加權(quán)歐式距離計(jì)算,得到人臉樣本與已有視頻的相似度,其中相似度在閥值范圍內(nèi)的視頻文件即為要搜索的視頻文件。流程圖如下:</p><p><b>  5.2視頻挖掘方案</b></p>&l

44、t;p>  首先對目標(biāo)人物和數(shù)據(jù)庫中已有的視頻文件進(jìn)行特征提取和特征處理,然后利用加權(quán)的歐式距離計(jì)算公式計(jì)算相似度,從而計(jì)算出目標(biāo)人物與數(shù)據(jù)庫中已有人物的相似度,最后得出誤差允許范圍內(nèi)的視頻文件,即為與目標(biāo)人物匹配的視頻文件。</p><p><b>  5.3相似度計(jì)算</b></p><p>  根據(jù)目標(biāo)人物的視頻提取出人物特征,查找視頻集中相關(guān)的人物視頻&

45、lt;/p><p>  對已知人物的視頻文件進(jìn)行分析和預(yù)處理,然后提取出人物的標(biāo)準(zhǔn)化特征值vi(i=1,2...10)。</p><p>  對已有的視頻集中的視頻文件進(jìn)行同樣的分析和處理,提取出人物的標(biāo)準(zhǔn)化特征值組,并將數(shù)據(jù)存儲到數(shù)據(jù)庫中。</p><p><b>  1.歐式距離</b></p><p>  根據(jù)歐式距離

46、的公式 d=sqrt( ∑(xi1-xi2)^2 ) 這里i=1,2..n</p><p>  計(jì)算出人物的相似程度,d的閥值月小,誤碼率越低。</p><p><b>  2.加權(quán)歐式距離</b></p><p>  考慮到上面計(jì)算誤差較大,充分考慮到各個特征至的大小差異和重要程度,采用加權(quán)的歐式距離公式來計(jì)算相似度:d=sqrt( ∑wi

47、(xi1-xi2)^2 ) 這里i=1,2..n,wi表示權(quán)值。</p><p><b>  5.4數(shù)據(jù)庫檢索</b></p><p>  本論文使用的數(shù)據(jù)庫中存儲了需要檢索的視頻集,其中某些視頻文件中包含了目標(biāo)人物。我們首先需要對視頻進(jìn)行預(yù)處理,然后進(jìn)行基于人臉的幾何特征提取和特征值處理,從而為每個視頻文件設(shè)置一個基于人臉幾何特征值的標(biāo)簽。當(dāng)進(jìn)行視頻檢索時(shí)只需要要把

48、目標(biāo)人物與視頻文件的特征值標(biāo)簽進(jìn)行相似度計(jì)算。</p><p>  5.5獲取對應(yīng)視頻文件</p><p>  數(shù)據(jù)庫中符合誤差標(biāo)準(zhǔn)的特征值標(biāo)簽所對應(yīng)的視頻文件即為想要尋找的視頻文件。</p><p>  第六章系統(tǒng)測試及運(yùn)行結(jié)果</p><p><b>  6.1測試原則</b></p><p&g

49、t;  (1)根據(jù)前期寫的功能需求進(jìn)行整個系統(tǒng)的測試。</p><p>  (2)需要清晰明了的書寫測試文檔和測試結(jié)果。</p><p>  (3)程序員需要根據(jù)測試文檔對自己的系統(tǒng)進(jìn)行改進(jìn)和說明</p><p>  6.2測試方案及結(jié)果</p><p>  基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘解決方案主要由視頻文件的預(yù)處理、人臉的檢測、特征的提取、視

50、頻挖掘四個部分組成。其中視頻挖掘的算法對識別精度有較大影響,因此需要重點(diǎn)測試,并根據(jù)測試結(jié)果進(jìn)行進(jìn)一步的算法改進(jìn)。</p><p>  6.2.1視頻文件的預(yù)處理</p><p>  提取出視頻文件的幀圖片,然后對圖像進(jìn)行處理:光線補(bǔ)償、高斯平滑、</p><p>  圖片灰度化、灰度均衡、對比度增強(qiáng)(直方圖均衡化)、圖片尺寸縮放</p><p&

51、gt;<b> ?。?)視頻文件取幀</b></p><p><b>  (2)圖像處理</b></p><p>  6.2.2人臉檢測和臉部器官檢測</p><p>  通過OpenCV自帶的分類器:haarcascade_frontalface_atl.xml檢測出人臉位置,通過haarcascade_eye.xml等

52、,檢測出人眼、鼻子、眉毛、嘴等位置信息。</p><p>  6.2.3人視頻挖掘</p><p>  通過人臉的幾何特征算法,利用人臉器官的七個特征點(diǎn),即四個眼角點(diǎn)、鼻尖點(diǎn)和兩個嘴角點(diǎn),利用它們的相對位置和角度作為特征值,進(jìn)行加權(quán)的歐氏距離計(jì)算,與數(shù)據(jù)庫中預(yù)存的特你們征信息進(jìn)行匹配,得到與人物相關(guān)的視頻文件。</p><p><b>  第七章結(jié)束語&

53、lt;/b></p><p><b>  7.1應(yīng)用程序特點(diǎn)</b></p><p>  (1)基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘以Windows,VS2013為開發(fā)平臺,使用OpenCV提供的視覺處理接口,采用面向?qū)ο蟮姆椒?,用C++及C語言編寫程序。</p><p> ?。?)本解決方案采用封裝思想,把各個功能模塊獨(dú)立封裝起來,提高了代碼的耦

54、合性,是程序的設(shè)計(jì)更加簡潔,代碼運(yùn)行更加高效</p><p> ?。?)本程序的改進(jìn)和擴(kuò)展。本系統(tǒng)中許多結(jié)構(gòu)和算法需要進(jìn)一步改進(jìn)的優(yōu)化,因?yàn)槟K的獨(dú)立性所以可以方便的添加功能而不影響原有功能。</p><p><b>  7.2心得體會</b></p><p>  在這段時(shí)間的程序編寫和算法研究過程中遇到了很多的問題和考驗(yàn),在指導(dǎo)老師的教誨下,

55、在項(xiàng)目組同學(xué)的幫助下,我們采用更適合的方法解決了很多的困難。雖然本次畢業(yè)設(shè)計(jì)還存在一些問題,但是我相信在以后的不斷學(xué)習(xí)中,可以把這套系統(tǒng)做的更好。在本次的畢業(yè)論文中,我主要從算法以及解決方案的闡述中,想讀者展示了基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘的方法和思路。</p><p><b>  7.3未來展望</b></p><p>  本系統(tǒng)的改進(jìn)方向,主要是對視頻文件進(jìn)行幀提取

56、后大量圖片進(jìn)行計(jì)算的效率問題,以及對人臉幾何特征識別算法的優(yōu)化,以達(dá)到在不犧牲運(yùn)算速度的前提下,進(jìn)一步提高視頻挖掘的準(zhǔn)確率。</p><p>  關(guān)于視頻集挖掘的速度問題是該解決方案可實(shí)施性的主要難題,因?yàn)榇罅康囊曨l集包含更加龐大的圖像信息,人臉識別的同時(shí)會大大加長運(yùn)算時(shí)間,從而影響視頻挖掘速度,故需要采用更加高效的人臉識別算法。</p><p><b>  參考文獻(xiàn)</b

57、></p><p>  山世光.面部特征檢測與識別的研究與實(shí)現(xiàn)M.哈爾濱:哈爾濱工業(yè)大學(xué),高等教育出版社,1999年7月</p><p>  蔣遂平.人臉識別技術(shù)及應(yīng)用簡介 [M].北京:清華大學(xué),中國計(jì)算機(jī)世界出版社,2003年12月</p><p>  于成忠,朱 駿,袁曉輝.基于背景差法的運(yùn)動目標(biāo)檢測 [J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,第35

58、卷 增刊(II):159~161.</p><p>  張怡.圖像跟蹤器綜合調(diào)試系統(tǒng)研究 [D].南京:南京理工大學(xué),哈爾濱出版社,2008.6</p><p>  李?。\(yùn)動目標(biāo)圖像的獲取、傳輸與跟蹤 [D].南京:南京理工大學(xué),2008.5</p><p>  高守傳 姚領(lǐng)田 等編著 Visual C++ 數(shù)字圖片處理與工程應(yīng)用篇 中國鐵道出版社 計(jì)算機(jī)工程

59、,2011,第37卷</p><p><b>  附錄</b></p><p><b>  視頻預(yù)處理代碼</b></p><p>  void Video_to_image(char* filename)  </p><p><b>  {

60、0; </b></p><p>  printf("------------- video to image ... ----------------n");  </p><p>  //初始化一個視頻文件捕捉器  </p><p> 

61、 CvCapture* capture = cvCaptureFromAVI(filename);  </p><p>  //獲取視頻信息  </p><p>  cvQueryFrame(capture);  </p><p>  int frameH 

62、   = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);</p><p>  int frameW    = (int) cvGetCaptureProperty(capture, CV_CAP_P

63、ROP_FRAME_WIDTH);</p><p>  int fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);  </p><p>  int numFrames

64、60;= (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);  </p><p>  printf("tvideo height : %dntvideo width : %dntfps : %dntfra

65、me numbers : %dn", frameH, frameW, fps, numFrames);  </p><p>  //定義和初始化變量  </p><p>  int i = 0;  </p>

66、<p>  IplImage* img = 0;  </p><p>  char image_name[13];  </p><p>  cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE ); 

67、60;</p><p><b>  //讀取和顯示  </b></p><p>  while(1)  </p><p><b>  { </b></p><p>  img = cvQueryFrame(capture);

68、60;//獲取一幀圖片  </p><p>  cvShowImage( "mainWin", img ); //將其顯示  </p><p>  char key = cvWaitKey(20);     &#

69、160;</p><p>  sprintf(image_name, "%s%d%s", "image", ++i, ".jpg");//保存的圖片名  </p><p>  cvSaveImage( image_name, img); &#

70、160; //保存一幀圖片  </p><p>  if(i == NUM_FRAME) break;  </p><p><b>  }  </b></p><p>  cvReleaseCapture(&capture); 

71、 </p><p>  cvDestroyWindow("mainWin");  </p><p><b>  } </b></p><p>  int main(int argc, char *argv[])  </p

72、><p><b>  {  </b></p><p>  char filename[13] = "test.avi";  </p><p>  Video_to_image(filename); //視頻轉(zhuǎn)圖片  </p&

73、gt;<p>  return 0;  </p><p><b>  }  </b></p><p><b>  圖像預(yù)處理代碼</b></p><p>  double scale = size;//圖片縮放處理,縮放倍數(shù)</p><p&

74、gt;  IplImage* gray = cvCreateImage(cvSize(Img_one->width, Img_one->height), 8, 1); //cvSize表示矩陣框大小(原圖像)</p><p>  IplImage* small_img = cvCreateImage(cvSize(cvRound(Img_one->width / scale), cvRoun

75、d(Img_one->height / scale)), 8, 1);//目標(biāo)圖像\</p><p>  cvCvtColor(Img_one, gray, CV_BGR2GRAY); //色彩空間轉(zhuǎn)換</p><p>  cvResize(gray, small_img, CV_INTER_LINEAR);//縮放原圖像到目標(biāo)圖像</p><p> 

76、 cvEqualizeHist(small_img, small_img);//對灰度圖像進(jìn)行直方圖均衡化</p><p>  cvClearMemStorage(storage)</p><p><b>  人臉檢測代碼</b></p><p>  void jiance()</p><p><b>  {&

77、lt;/b></p><p>  // 加載Haar特征檢測分類器</p><p>  // haarcascade_frontalface_alt.xml系OpenCV自帶的分類器</p><p>  const char *pstrCascadeFileName = "D:\\ProgramFiles\\opencv\\sources\\data

78、\\</p><p>  haarcascades\\haarcascade_frontalface_alt.xml";</p><p><b>  //分類器</b></p><p>  CvHaarClassifierCascade *pHaarCascade = NULL;</p><p>  pHaar

79、Cascade = (CvHaarClassifierCascade*)cvLoad(pstrCascadeFileName);</p><p><b>  // 載入圖像</b></p><p>  //const char *pstrImageName = "E:\\photoes\\222.jpg";</p><p>

80、  char pstrImageName[50];</p><p>  IplImage *pSrcImage[photoes_num];//原圖</p><p>  IplImage *pGrayImage[photoes_num];//灰度</p><p>  IplImage *imageProcessed[photoes_num];//均衡</p>

81、;<p>  for (int j = 0; j < photoes_num; j++)</p><p><b>  {</b></p><p>  sprintf(pstrImageName, "%s%d.jpg", filename, j);</p><p>  //圖片地址,把圖片地址寫入緩沖區(qū)緩沖

82、區(qū)50char</p><p>  pSrcImage[j] = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);</p><p><b>  //加載圖片,原圖</b></p><p>  pGrayImage[j] = cvCreateImage(cvGetSize(pSrcImage

83、[j]), IPL_DEPTH_8U, 1);</p><p>  //為灰度圖片分配空間</p><p>  cvCvtColor(pSrcImage[j], pGrayImage[j], CV_BGR2GRAY);</p><p>  //是Opencv里的顏色空間轉(zhuǎn)換函數(shù),也可以轉(zhuǎn)換為灰度圖像。</p><p>  imageProce

84、ssed[j] = cvCreateImage(cvSize(300, 300), IPL_DEPTH_8U, 1);</p><p>  cvResize(pGrayImage[j], imageProcessed[j], CV_INTER_LINEAR);//原圖 目標(biāo)圖像 </p><p>  cvEqualizeHist(imageProcessed[j], imageProces

85、sed[j]);</p><p>  //用來使灰度圖象直方圖均衡化。</p><p>  if (pHaarCascade != NULL)</p><p><b>  {</b></p><p>  CvScalar FaceCirclecolors[8] =</p><p><b>

86、;  {</b></p><p>  { { 0, 0, 255 } },</p><p>  { { 0, 128, 255 } },</p><p>  { { 0, 255, 255 } },</p><p>  { { 0, 255, 0 } },</p><p>  { { 255, 128, 0

87、 } },</p><p>  { { 255, 255, 0 } },</p><p>  { { 255, 0, 0 } },</p><p>  { { 255, 0, 255 } }</p><p><b>  };</b></p><p>  CvMemStorage *pcvMStor

88、age = cvCreateMemStorage(0);</p><p>  cvClearMemStorage(pcvMStorage);</p><p>  DWORD dwTimeBegin, dwTimeEnd;</p><p>  dwTimeBegin = GetTickCount();</p><p>  CvSeq *pcvS

89、eqFaces = cvHaarDetectObjects(pGrayImage[j], pHaarCascade, pcvMStorage, 1.1, 2, CV_HAAR_DO_ROUGH_SEARCH, cvSize(30, 30));</p><p><b>  //創(chuàng)建一序列</b></p><p>  //pGrayImage1</p>&l

90、t;p>  dwTimeEnd = GetTickCount();</p><p>  printf("人臉個數(shù): %d 識別用時(shí): %d ms\n", pcvSeqFaces->total, dwTimeEnd - dwTimeBegin);</p><p><b>  // 標(biāo)記</b></p><p>

91、  for (int i = 0; i < pcvSeqFaces->total; i++)</p><p><b>  {</b></p><p>  CvRect* r = (CvRect*)cvGetSeqElem(pcvSeqFaces, i);</p><p>  //函數(shù)cvGetSeqElem返回索引指定的元素指針&l

92、t;/p><p>  CvPoint center;//坐標(biāo)</p><p>  int radius;</p><p>  center.x = cvRound((r->x + r->width * 0.5));</p><p>  center.y = cvRound((r->y + r->height * 0.5))

93、;</p><p>  radius = cvRound((r->width + r->height) * 0.25);</p><p>  //對一個double型的數(shù)進(jìn)行四舍五入,并返回一個整型數(shù)!</p><p>  cvCircle(pSrcImage[j], center, radius, FaceCirclecolors[i % 8], 2)

94、;</p><p>  //指繪制圓形的一個程序函數(shù)</p><p><b>  }</b></p><p>  cvReleaseMemStorage(&pcvMStorage);</p><p>  //建立輸出圖片的窗口</p><p>  const char *pstrWindo

95、wsTitle = "人臉識別";</p><p>  cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);</p><p>  cvShowImage(pstrWindowsTitle, pSrcImage[j]);//輸出圖片</p><p>  cvWaitKey(0);</p>

96、;<p>  cvDestroyWindow(pstrWindowsTitle);</p><p><b>  //以下釋放資源</b></p><p>  cvReleaseImage(&pSrcImage[j]);</p><p>  cvReleaseImage(&pGrayImage[j]);</p&

97、gt;<p>  //cvReleaseImage(&srcImage[j]);</p><p>  if (imageProcessed[j])</p><p>  cvReleaseImage(&imageProcessed[j]);</p><p><b>  }</b></p><p&g

98、t;<b>  }</b></p><p><b>  }</b></p><p>  人臉器官(人眼)識別代碼</p><p>  void detectEyes(IplImage *img){</p><p>  CvMemStorage* storage = 0;  &

99、#160; storage = cvCreateMemStorage(0) ;    CvHaarClassifierCascade* cascade_f = 0;    const char* cascade_name = "/home/dz/prog/OpenCV-.4.2/data/haarcascades/</p>

100、<p>  haarcascade_frontalface_alt2.xml";    cascade_f = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );</p><p>  CvSeq *faces = cvHaarDetectObjects(img,  

101、;cascade_f,  storage,  1.1, 3, 0,        cvSize(40, 40) );</p><p>  if (faces->total == 0) return;cout<<faces->total<<endl

102、;    for(int ii=0;ii<faces->total;ii++)    {        cout<<ii<<endl;        

103、60; CvRect *face = (CvRect*)cvGetSeqElem(faces, ii);cvRectangle(        img,        cvPoint(face->x, face->y),  

104、60;     cvPoint(            face->x + face->width,            face-

105、>y + face->height        ),        CV_RGB(255, 0, 0),        1, 8, 0   

106、0;);// cvClearMemStorage(storage);</p><p>  //cvRelease((void**)cascade_f);CvMemStorage* storage1 = 0;storage1 = cvCreateMemStorage(0) ; cvSetImageROI(       

107、 img,                           cvRect(</p><p>  face->x, 

108、                      face->y + (face->height/5.5),        

109、60;   face->width,                   face->height/3.0        &

110、#160;  )    );</p><p>  CvHaarClassifierCascade* cascade_e = 0; </p><p>  const char* cascade_name2 = </p><p>  "/home/dz/prog/OpenCV-2.4.2/

111、data/haarcascades/haarcascade_eye.xml";    cascade_e = (CvHaarClassifierCascade*)cvLoad( cascade_name2, 0, 0, 0 );    assert(cascade_e != NULL);    //st

112、orage = cvCreateMemStorage(0) ;       CvSeq *eyes = cvHaarDetectObjects(        img,         

113、0;         cascade_e,             storage1,          

114、0;    1.1, 3, 0,            cvSize(4, 5)    );    int i;      

115、0;for( i = 0; i < (eyes ? eyes->total : 0); i++ ) {               CvRect *eye = (CvRect*)cvGetSeqEle</p><p>  cvRectangle(&

116、#160;           img,            cvPoint(eye->x, eye->y),       

117、;     cvPoint(eye->x + eye->width, eye->y + eye->height),            CV_RGB(255, 0, 0),     

118、0;      1, 8, 0        );    }    cvResetImageROI(img);</p><p><b>  }}</b></p&

119、gt;<p><b>  致謝</b></p><p>  在畢業(yè)論文結(jié)束的同時(shí),我大學(xué)生活也將結(jié)束,在過去的四年里我成長了很多,字啊此感謝在畢業(yè)設(shè)計(jì)中對我大力支持的黃老師和對我提供幫助的同學(xué)們。在完成畢業(yè)設(shè)計(jì)的過程中我得到了老師同學(xué)的很多寶貴意見,與同學(xué)之間的交流讓我受益匪淺。</p><p>  本次論文選擇基于人物的相關(guān)網(wǎng)絡(luò)視頻挖掘是一種挑戰(zhàn),在相

120、關(guān)文獻(xiàn)的篩選,現(xiàn)有理論成果的研究中,我學(xué)到了很多之前沒有接觸過的知識,豐富了我的專業(yè)文化知識,在今后的工作學(xué)習(xí)中我會揚(yáng)長避短更加努力的學(xué)習(xí)專業(yè)知識,把大學(xué)學(xué)到的專業(yè)知識完善和提高。</p><p>  本次畢業(yè)設(shè)計(jì)中,我鞏固了之前學(xué)習(xí)的專業(yè)文化知識,提高了閱讀文檔和編寫程序的能力,懂得了軟件設(shè)計(jì)的理念和測試的流程,運(yùn)用了現(xiàn)有的理論完成了一個課題的研究,在此,我對老師和同學(xué)的幫助再次表示感謝。</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論