[本科畢業(yè)論文]帶人形檢測的家庭攝像監(jiān)控系統(tǒng)——運(yùn)動畫面的捕獲與處理-工學(xué)學(xué)士_第1頁
[本科畢業(yè)論文]帶人形檢測的家庭攝像監(jiān)控系統(tǒng)——運(yùn)動畫面的捕獲與處理-工學(xué)學(xué)士_第2頁
[本科畢業(yè)論文]帶人形檢測的家庭攝像監(jiān)控系統(tǒng)——運(yùn)動畫面的捕獲與處理-工學(xué)學(xué)士_第3頁
[本科畢業(yè)論文]帶人形檢測的家庭攝像監(jiān)控系統(tǒng)——運(yùn)動畫面的捕獲與處理-工學(xué)學(xué)士_第4頁
[本科畢業(yè)論文]帶人形檢測的家庭攝像監(jiān)控系統(tǒng)——運(yùn)動畫面的捕獲與處理-工學(xué)學(xué)士_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、AbstractIn peoples living level increases in modern society, people in addition to the material conditions improve outside, safety consciousness, more and more is also high on their own personal property safety also pay more and more attention to. But now the burglary, robbery is not rare. In order

2、to guard against theft and buy expensive anti-theft device yet would increase spending, economic burden not to come over. Now if the use of the original image capture at home device (for example, camera, digital camera) and a computer, can the family monitoring. This monitoring software after the ca

3、mera to capture images of picture, in order to reduce the influence of environment, first of image, the gray processs gray-scale processing is actually denoising first step. Then compared with background threshold, judge whether there is a motion graphics, extract movement graphics. After extraction

4、, then there is motion graphics, the picture denoising 55 range denoising, get low interference information, and thus for the image scene monitoring. Meanwhile has good dynamic response characteristics, can timely find suspicious circumstances, and have humanoid detection function, can rapidly match

5、ing humanoid features, prevent supervisory system of the family animals and the non-human miscalculation. Users simply use simple communication tools (such as mobile phone) can achieve anytime master home safety monitoring. After long time and more under the changing environment test, our system can

6、 normal use, can extract objects in motion, and normal can judge whether human.Key word: family monitoring; gray change; Screen capture; Extraction motion graphics; Remove speckles;1.1 研究家庭攝像頭監(jiān)控系統(tǒng)的意義現(xiàn)在國家大力普及電腦,而 也成為人們生活必不可少的一局部,生活水平的提高,讓人們更加注重自己和家人的人身財產(chǎn)平安,家庭攝像頭監(jiān)控系統(tǒng)就倍受人們青睞?,F(xiàn)在只要一臺電腦,一個攝像頭和一臺 ,就可以使用本系統(tǒng)

7、的全部功能,大大方便了人們的生活。當(dāng)您在辦公室工作,當(dāng)您在郊外旅游的時候,突然收到一條短信,提醒您家里有“異常情況的時候,你可以馬上通過 或者筆記本電腦等設(shè)備來開啟你的郵箱,及時的查看家里發(fā)生的情況。如果,您發(fā)現(xiàn)了有竊賊的入侵,您可以馬上采取措施來阻止或者減少家庭財產(chǎn)的損失,并且留下的證據(jù)將對警方的調(diào)查起到非常有力的幫助??梢哉f,家庭攝像頭監(jiān)控系統(tǒng)是在突破了空間條件限制,而進(jìn)行的無需人工看守的自動監(jiān)控系統(tǒng)?,F(xiàn)在,就算你家里沒有人,你身在遠(yuǎn)門也不用擔(dān)憂家里的情況,家里的一切,盡在掌握中。畫面捕捉與處理在家庭攝像頭監(jiān)控系統(tǒng)的中的意義本系統(tǒng)針對現(xiàn)在市場上的情況,研究出人形判斷功能,能對出現(xiàn)在背景中的

8、是否人類。只有當(dāng)“人形特征出現(xiàn)在畫面上的時候,才判定為“異常情況。而在獲取“人形圖像信息上,我們也做了一些工作。因為要判斷出現(xiàn)的運(yùn)動物體是否人形,首先必不可少的一步,就是去除背景,提取運(yùn)動圖形,然后去除雜點,提供一個低干擾,清楚的運(yùn)動圖形,為人形判斷功能鋪墊根本前提。2.1 市場需求現(xiàn)在市面上已經(jīng)有不少家庭監(jiān)控軟件存在,例如:“天眼家庭監(jiān)控軟件、“安心e家在線家庭監(jiān)控軟件、“超級門衛(wèi)等,而且家庭監(jiān)控系統(tǒng)在市場上非常受歡送。但是,這些家庭監(jiān)控軟件都有一個共同的缺點,那就是在監(jiān)控機(jī)制方面都是簡單的判斷畫面變動,而不會自動識別畫面出現(xiàn)的物體是人類還是非人類。也就是說,把人形檢測功能融入到家庭監(jiān)控的這

9、項技術(shù),或者這一類的軟件,在市面上仍是一個空白。圖像識別技術(shù)一直以來是很多計算機(jī)圖像編程專家熱點研究的問題,當(dāng)然也包括人形檢測。因為此類技術(shù)的新穎與其難度相對較大,致使使用這類技術(shù)來開發(fā)適合家庭使用的群眾化軟件也相對較少。通過以上的需求分析,我們得出這樣一個總結(jié),在經(jīng)濟(jì)高速開展的今天,人們更需要一種平安,方便,實用的家庭監(jiān)監(jiān)控軟件來保障家庭財產(chǎn)的平安。而帶人形檢測的家庭攝像頭監(jiān)控系統(tǒng)在國內(nèi)市場的空缺,正是家庭監(jiān)控軟件的一個巨大瓶頸。但是,在瓶頸出現(xiàn)的同時,也說明了家庭監(jiān)控軟件還隱藏著大量的開展前景與商業(yè)機(jī)遇。為此,我們通過不斷的探究與學(xué)習(xí),開發(fā)出了這一款“帶人形檢測的家庭攝像頭監(jiān)控系統(tǒng)。普通的

10、家庭,購置家庭攝像頭監(jiān)控系統(tǒng),一個是為平安,一個是方便,一個是可靠。所以作為一個家庭監(jiān)控系統(tǒng),要能滿足用戶對系統(tǒng)的目標(biāo)要求,滿足平安系統(tǒng)的大局部要求。方便性,即用戶能很方便,快捷地使用監(jiān)控系統(tǒng),不用做很繁瑣的操作和準(zhǔn)備。靈敏度,即硬件擴(kuò)展,硬件的選擇,變更不會受到很大限制??煽啃?,即系統(tǒng)的使用是否能到達(dá)目標(biāo)要求,各項功能是否能正常使用,如日常監(jiān)控,報警機(jī)制等,是否可靠等等。2.3 用戶需求我們的系統(tǒng)操作簡單,硬件要求低,是因為考慮到本系統(tǒng)主要面向的對象是家庭用戶,提供應(yīng)家庭使用的,而一般的普通家庭對電子行業(yè)并不了解,所以我們盡量使系統(tǒng)界面簡潔,操作簡便,硬件要求簡單。用戶要使用我們的系統(tǒng),只需

11、擁有一臺電腦, 一臺,一個攝像頭,和具備最根本的電腦操作能力就滿足使用本系統(tǒng)的條件。用戶只要把攝像頭連接到電腦上,并翻開我們的軟件,按照自己的需要進(jìn)行簡單的設(shè)置,就可以使用我們的監(jiān)控系統(tǒng)了。通過簡便的操作,簡單的硬件要求,使所有的家庭用戶都能很方便地使用我們的系統(tǒng),而不用大費(fèi)周章,花費(fèi)心思地去使用我們的系統(tǒng)。 2.4 功能需求一個家庭監(jiān)控系統(tǒng),必須具有的功能是自動報警,因為是家庭監(jiān)控,不會有人長時間守在電腦前監(jiān)視的。所以,我們的系統(tǒng)有智能判斷功能,即當(dāng)畫面發(fā)生變化,就會自動報警。而在畫面判斷方面,我們考慮到有些家庭有養(yǎng)寵物的情況,針對這類情況,我們設(shè)計了一個功能,就是當(dāng)畫面上出現(xiàn)人形圖像時,我

12、們才判斷有外人進(jìn)入,從而不會因為寵物的走動而產(chǎn)生誤判。同時,一個監(jiān)控系統(tǒng)還必須有報警功能。當(dāng)用戶在外,家里沒人時,我們系統(tǒng)可以進(jìn)行遠(yuǎn)程報警,即發(fā)短信通知用戶,同時還會把當(dāng)時截取下來的圖片發(fā)送到用戶郵箱,以便用戶查看。這樣,無論用戶在任何地方,都可以第一時間發(fā)覺家里的異常情況,讓用戶可以安心的離開家門去忙自己的事情。一個監(jiān)控系統(tǒng),還必須有證據(jù)捕獲機(jī)制。我們的系統(tǒng)在畫面發(fā)生變更時,或有人形圖像出現(xiàn)是,就會截圖,除了在本地保存以外,還會把截下來的圖片發(fā)送到用戶郵箱,進(jìn)行證據(jù)的保存。由于本系統(tǒng)針對的用戶是家庭用戶,主要用于家里沒人,用戶外出的情況,所以監(jiān)控系統(tǒng)就有必要擁有遠(yuǎn)程控制功能。本系統(tǒng)除了可以發(fā)

13、送短信通知用戶家里的情況以外,還可以接收用戶發(fā)回來的短信指令,從而實現(xiàn)遠(yuǎn)程控制系統(tǒng)的開關(guān)。當(dāng)用戶遠(yuǎn)門在外,或不方便回家,而又有親人或朋友回家了,這時監(jiān)控系統(tǒng)檢測到有人形圖像出現(xiàn),就會啟動報警機(jī)制,發(fā)送信息通知用戶。為了不用受到這不必要的打攪,我們設(shè)置了一個遠(yuǎn)程開關(guān)系統(tǒng)的功能,用戶只要通過 發(fā)送簡單的指令,就可以對系統(tǒng)進(jìn)行遠(yuǎn)程開關(guān)控制,而不用受到不必要的打攪。3.系統(tǒng)整體功能概述 運(yùn)動畫面的捕獲與處理模塊一個監(jiān)控系統(tǒng)首先是要把攝像頭拍攝到的畫面?zhèn)魅氲较到y(tǒng)中,本系統(tǒng)是調(diào)用API函數(shù)獲取攝像頭拍攝到的畫面。系統(tǒng)在運(yùn)行初期先啟動攝像頭,然后拍攝一個當(dāng)前無人環(huán)境時的圖片,然后進(jìn)行灰度化處理,減少環(huán)境和硬

14、件對畫面的影響,灰度化以后的圖片作為基準(zhǔn)圖片,接著通過循環(huán)截取攝像頭捕獲的圖片。每截取一張新的圖片,就進(jìn)行一次灰度化處理,然后把灰度化后的圖片與基準(zhǔn)圖片相比擬,把兩張圖片不同的點記錄出來。經(jīng)過屢次循環(huán)比擬,把收集起來的點集結(jié)合起來,畫到一張空的圖片中去,就形成了運(yùn)動物體的去背景效果,也就實現(xiàn)了把畫面中某個運(yùn)動的物體提取出來的操作。因為現(xiàn)在市面上攝象頭的象素與質(zhì)量不統(tǒng)一,難免在捕獲圖像的時候產(chǎn)生雜點,而環(huán)境的光線因素會對畫面的變化產(chǎn)生更嚴(yán)重的影響。這里的雜點,指的是捕獲的運(yùn)動點集中,除運(yùn)動物體外的沒有信息價值的點,如由于光線變化因素,某個像素點產(chǎn)生了變化,于是被記錄下來,當(dāng)成了運(yùn)動圖形的一局部。

15、所以,接下來的工作就是需要經(jīng)過特定的算法,把雜點去掉,稱為去噪。把在運(yùn)動點集中的像素點保存,而分散的比擬開的點當(dāng)作雜點去掉,而保證提取出來的運(yùn)動圖形剩下的點都是物體在運(yùn)動過程中所產(chǎn)生的。運(yùn)動畫面的捕獲與處理模塊作為整個系統(tǒng)信息輸入的接口之一,包括了畫面捕獲,畫面灰度化處理,提取運(yùn)動點集,畫面去雜點幾個局部。將計算機(jī)前運(yùn)動的畫面捕獲下來,實現(xiàn)了現(xiàn)實生活畫面轉(zhuǎn)換為計算機(jī)信息的過程。經(jīng)過處理,將有價值的信息提取出來并輸送給下一個模塊。 人形檢測模塊經(jīng)過前一步的操作,我們可以得到運(yùn)動物體的圖形。接下來便是對運(yùn)動圖形的各種信息進(jìn)行獲取,如長度,高度,比例等等。當(dāng)掌握了我們所需要的信息之后,便可以進(jìn)行進(jìn)行

16、人形特征匹配。人形檢測模塊作為整個系統(tǒng)的核心處理局部,依據(jù)意大利著名畫家達(dá)芬奇提出的人體黃金比例約束規(guī)律進(jìn)行分析。人形檢測模塊包含了畫面收集,按比例計算,人形特征匹配三個局部。將從運(yùn)動畫面的捕獲與處理模塊得到的信息進(jìn)行進(jìn)一步處理,分析出是否含有疑似人類外形的圖片,并將信息傳遞給下一個模塊,做出相應(yīng)的反應(yīng)。報警與控制模塊 當(dāng)接收到上一個模塊處理完的信息時候,判斷是否調(diào)用報警機(jī)制。當(dāng)報警機(jī)制被激活時,通過調(diào)用系統(tǒng)API函數(shù),啟動發(fā)送郵件通知用戶,并啟動鼠標(biāo)鍵盤模擬操作通訊工具。在發(fā)送郵件的同時,系統(tǒng)將自動把變化的畫面生成圖片,然后保存在計算機(jī)里。并且,這些圖片將會以畫面變動的具體時間來作為圖片名。

17、同時,軟件將通過郵件里面的附件功能,把這些圖片打包成為附件,然后向用戶的郵箱里發(fā)送。萬一發(fā)生入竊事件,保存在郵箱里的圖片將會給警方破案帶來極大的幫助。而且本系統(tǒng)有遠(yuǎn)程控制功能,用戶只要發(fā)送簡單指令便可遠(yuǎn)程控制本系統(tǒng)的開關(guān)。 系統(tǒng)UI設(shè)計UI即User Interface用戶界面的簡稱。UI設(shè)計那么是指對軟件的人機(jī)交互、操作邏輯、界面美觀的整體設(shè)計。好的UI設(shè)計不僅是讓軟件變得有個性有品味,還要讓軟件的操作變得舒適、簡單、自由、充分表達(dá)軟件的定位和特點。因為這個軟件是一個家庭監(jiān)控系統(tǒng),也就是說,這個軟件面向的是普通家庭使用。那么,我們首先要考慮到的第一個問題是,軟件使用的難易程度。通過我們對市面

18、上一些攝象頭軟件的調(diào)查發(fā)現(xiàn),大多數(shù)產(chǎn)品的設(shè)置過于復(fù)雜。一些太專業(yè)性的設(shè)置對于一般人來說,都很難理解和弄清楚這個功能是干什么用的。所以在使用操作方面,我們盡可能的從簡單入手,去除了一大堆煩瑣的操作。3.5 系統(tǒng)流程框圖圖 3-1 系統(tǒng)流程框圖4.相關(guān)編程語言解析4.1相關(guān)編程語言介紹C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級程序設(shè)計語言。并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運(yùn)行的

19、過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。C#成為ECMA與ISO標(biāo)準(zhǔn)標(biāo)準(zhǔn)。C#看似基于C+寫成,但又融入其它語言如Pascal、Java、VB等。微軟c#語言定義主要是從C和C+繼承而來的,而且語言中的許多元素也反映了這一點.C#在設(shè)計者從C+繼承的可選選項方面比Java要廣泛一些(比方說struts),它還增加了自己新的特點(比方說源代碼版本定義).(1)簡潔的語法在缺省的情況下,C#的代碼在.NET框架提供的“可操縱環(huán)境下運(yùn)行,不允許直接地內(nèi)存操作。它所帶來的最大的

20、特色是沒有了指針。與此相關(guān)的是,那些在C+中被瘋狂使用的操作符例如:“:、“-和“.,已經(jīng)不再出現(xiàn)。C#只支持一個“.,對于我們來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。語法中的冗余是C+中的常見的問題,比方const和#define、各種各樣的字符類型等等。C#對此進(jìn)行了簡化,只保存了常見的形式,而別的冗余形式從它的語法結(jié)構(gòu)中被去除了出去。(2)精心地面向?qū)ο笤O(shè)計C#具有面向?qū)ο蟮恼Z言所應(yīng)有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向?qū)ο笤O(shè)計,從高級商業(yè)對象到系統(tǒng)級應(yīng)用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱

21、(boxing)與拆箱(unboxing)的機(jī)制來完成這種操作,而不給使用者帶來麻煩,這在以后的章節(jié)中將進(jìn)行更為詳細(xì)的介紹。C#只允許單繼承,即一個類不會有多個基類,從而防止了類型定義的混亂。在后面的學(xué)習(xí)中你很快會發(fā)現(xiàn),C#中沒有了全局函數(shù),沒有了全局變量,也沒有了全局常數(shù)。一切的一切,都必須封裝在一個類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)(Visual Object System,VOS)的根底之上,其對象模型是.NET根底架構(gòu)的一局部,而不再是其本身的組成局部。在下面將會談到,這樣做的另一個好處是兼容性。(3)版本處理

22、技術(shù)C#提供內(nèi)置的版本支持來減少開發(fā)費(fèi)用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護(hù)各種商業(yè)用戶。升級軟件系統(tǒng)中的組件模塊是一件容易產(chǎn)生錯誤的工作。在代碼修改正程中可能對現(xiàn)存的軟件產(chǎn)生影響,很有可能導(dǎo)致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內(nèi)置了版本控制功能。例如:函數(shù)重載必須被顯式聲明,而不會象在C+或java中經(jīng)常發(fā)生的那樣不經(jīng)意地被進(jìn)行,這可以防止代碼級錯誤和保存版本化的特性。另一個相關(guān)的特性是接口和接口繼承的支持。這些特性可以保證復(fù)雜的軟件可以被方便地開發(fā)和升級。5. 運(yùn)動畫面的捕獲與處理模塊解析5.1 畫面捕獲我們的系統(tǒng)是一個視頻監(jiān)控系統(tǒng),要設(shè)計一個視頻監(jiān)控系統(tǒng),首先

23、,是要獲取視頻拍攝的畫面,即畫面捕獲。在畫面捕獲方面,我們主要使用了VFWVideo for Windows技術(shù)。VFW 是Microsoft公司為開發(fā)Windows平臺下的視頻應(yīng)用程序提供的軟件工具包,提供了一系列應(yīng)用程序編程接口API,用戶可以通過這些接口很方便地實現(xiàn)視頻捕獲、視頻編輯及視頻播放等通用功能,還可利用回調(diào)函數(shù)開發(fā)比擬復(fù)雜的視頻應(yīng)用程序。該技術(shù)的特點是播放視頻時不需要專用的硬件設(shè)備,而且應(yīng)用靈活,可以滿足視頻應(yīng)用程序開發(fā)的需要。Windows操作系統(tǒng)自身就攜帶了VFW技術(shù),系統(tǒng)安裝時,會自動安裝VFW的相關(guān)組件。但是,由于我們的系統(tǒng)只是一個家庭監(jiān)控系統(tǒng),一般家庭都不具備錄音設(shè)備

24、,所以監(jiān)控只能錄取圖像,不設(shè)置現(xiàn)場聲音的錄取。本系統(tǒng)的一個核心功能就是對監(jiān)控畫面進(jìn)行人形判斷,判斷畫面上的活動物體是否符合人形特征,從而進(jìn)行報警。而且一個監(jiān)控系統(tǒng)的最根本功能,首先是能通過攝像頭把攝像頭拍攝到的畫面?zhèn)鬟f到本系統(tǒng)的畫面上,從而顯示監(jiān)控畫面。所以,我們的系統(tǒng)的第一個要實現(xiàn)的功能就是在本系統(tǒng)上顯示攝像頭拍攝到的畫面畫面捕捉。首先,我們要獲得顯示畫面的控件的句柄:handle = this.panel1.Handle.ToInt32();接著,就要把攝像頭的畫面通過句柄 hw 把畫面?zhèn)魉偷絧anel1中。畫面捕捉過程由 capCreateCaptureWindow 方法開始. 當(dāng)調(diào)用這

25、個方法時, 就會把panel1創(chuàng)立成為一個新的視頻窗口,并返回一個句柄。 句柄是一個32位的數(shù),用來作為對象的引用。hHwnd = capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 400, 300, handle, 0);當(dāng)圖像捕捉窗口建立以后,就可以把圖像設(shè)備的驅(qū)動和它連接了。以下的 OpenCapture 將開啟攝象頭并把畫面?zhèn)鹘o控件。傳入的參數(shù)是控件的句柄。public void OpenCapture(Int32 handle) int intWidth = 400; int intHeight = 300; int i

26、ntDevice = 0; string refDevice = intDevice.ToString(); /創(chuàng)立視頻窗口并得到句柄 hHwnd = capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 400, 300, handle, 0); if (SendMessage(hHwnd, 0 x40a, intDevice, 0) 0) SendMessage(this.hHwnd, 0 x435, -1, 0); SendMessage(this.hHwnd, 0 x434, 0 x42, 0); SendMessage(th

27、is.hHwnd, 0 x432, -1, 0); SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight, 6); else DestroyWindow(this.hHwnd); 通過以上方法,就可以實現(xiàn)把攝像頭的畫面?zhèn)魉偷街贫ǖ拇翱谏希瑢崿F(xiàn)了本系統(tǒng)的第一步。效果如下列圖所示:圖 5-1 畫面捕捉當(dāng)畫面出現(xiàn)在控件里面后,我們調(diào)用Graphics.CopyFromScreen Method (Int32, Int32, Int32, Int32, Size)函數(shù)進(jìn)行屏幕截圖。截取下來的第一張圖片,作為一個基準(zhǔn)圖片,以該圖片為平安狀態(tài)的畫面,假

28、設(shè)接下來的圖片與基準(zhǔn)圖片不相同了,就判斷畫面出現(xiàn)了變化。5.2 提取運(yùn)動圖形 灰度化處理由于本系統(tǒng)對硬件的要求不高,普通的攝像頭就可以進(jìn)行攝像監(jiān)控,不需要質(zhì)量很高的攝像頭,但由于攝像頭的質(zhì)量不高也帶來了一些問題,例如畫質(zhì)不高,即使畫面沒有發(fā)生變動,由于攝像頭的質(zhì)量問題或光線影響,每一幀圖片的像素點也有可能不同,導(dǎo)致系統(tǒng)判斷錯誤。所以我們在判斷是否畫面發(fā)生變動前,我們需要先進(jìn)行灰度化處理,以減少硬件和環(huán)境對判斷的影響將彩色圖像轉(zhuǎn)化成為灰度圖像的過程稱為圖像的灰度化處理。彩色圖像中的每個像素的顏色有RGB三個分量決定,而每個分量有255中值可取,這樣一個像素點可以有1600多萬255255255的

29、顏色的變化范圍。而灰度圖像是RGB三個分量相同的一種特殊的彩色圖像,其一個像素點的變化范圍為255種,所以在數(shù)字圖像處理種一般先將各種格式的圖像轉(zhuǎn)變成灰度圖像以使后續(xù)的圖像的計算量變得少一些?;叶葓D像的描述與彩色圖像一樣仍然反映了整幅圖像的整體和局部的色度和亮度等級的分布和特征。圖像的灰度化處理可用兩種方法來實現(xiàn)。第一種方法使求出每個像素點的RGB三個分量的平均值,然后將這個平均值賦予給這個像素的三個分量,稱為平均值算法。第二種方法是根據(jù)YUV的顏色空間中,Y的分量的物理意義是點的亮度,由該值反映亮度等級,根據(jù)RGB和YUV顏色空間的變化關(guān)系可建立亮度Y與RGB三個顏色分量的對應(yīng):Y=0.3R

30、+0.11B,以這個亮度值表達(dá)圖像的灰度值。經(jīng)過灰度化處理后,兩張的圖片效果如下所示:圖 5-2 灰度前圖 5-3 灰度后 提取運(yùn)動圖形由于我們的系統(tǒng)除了普通的畫面發(fā)生變動即報警的功能外,還有一個核心功能,就是人形判斷,即對畫面上發(fā)生變化的局部進(jìn)行判斷是否人形。要判斷是否人形,首先當(dāng)然就是提取運(yùn)動圖形,我們需要從背景不變的圖像序列中較好的提取出運(yùn)動對象。在視頻監(jiān)控中,假設(shè)監(jiān)控場景和攝像頭保持相對不變,那么背景圖像的大小和位置在不同幀中是不變的,因而可以直接利用幀間同一位置的像素點的亮度或顏色的變化來提取運(yùn)動圖形。但如果是兩幀之間進(jìn)行比擬,就很容易出現(xiàn)一個問題,就是如果前一幀中出現(xiàn)一個人,而后一

31、幀中該人物只動了一個手臂,那么提取出來的運(yùn)動圖像就只是一個手臂,就不能提取出來整個人物的圖形了。所以我們采用的方法是,開啟攝像時,截取第一張圖片作為基準(zhǔn)圖片,隨后啟動線程,不停地對監(jiān)控窗口進(jìn)行截圖,每截取一張圖,先進(jìn)行灰度處理,然后就與基準(zhǔn)圖片每一個像素點進(jìn)行比擬,當(dāng)像素點不同時,該像素點就是運(yùn)動圖形的一個像素點。假設(shè)我們現(xiàn)在有兩張圖,上面有都有4個像素點,白色圓圈代表原來的像素點,黑色圓圈代表發(fā)生了變化的像素點,提取運(yùn)動圖形后,如下列圖所示圖 5-4 運(yùn)動圖像的提取那么,我們第一步要做的是把兩張圖片的每一個象素提取出來,再做比擬,如果差異大于閾值就把該點提取出來。一開始,我們用GetPixe

32、l 函數(shù)對圖片進(jìn)行提取象素。然后把取得象素的兩張圖片進(jìn)行象素遍歷。我們遍歷的圖片大小是400300,那么就是說,一共需要進(jìn)行120000次循環(huán)遍歷。經(jīng)過實驗我們發(fā)現(xiàn)用GetPixel 函數(shù)對圖片進(jìn)行取象素速度非常的慢,而且也對系統(tǒng)造成了大量占用。很明顯,我們需要找到另外一種高速高效率的方法來遍歷這兩張圖片。最后,我們找到了一種可以快速遍歷圖片象素的方法。因為.NET是托管代碼系統(tǒng),它最常使用的是托管數(shù)據(jù),所以我們并不需要經(jīng)常訪問存貯在內(nèi)存中的字節(jié)。但是,圖像的處理需要訪問內(nèi)存中的字節(jié)。GetPixel 函數(shù)對圖片進(jìn)行取象素訪問托管數(shù)據(jù)的速度太慢了。所以我們必須深入探究操作圖像數(shù)據(jù)的方法。Bit

33、map類提供了LockBits方法以及對應(yīng)的UnlockBits方法。我們可以鎖定內(nèi)存中的局部圖像像素數(shù)據(jù)數(shù)組,然后直接訪問并可修改bitmap中的二進(jìn)制位。LockBits返回的BitmapData類型的數(shù)據(jù)描述了鎖定的數(shù)組中數(shù)據(jù)的布局和位置信息。BitmapData類有以下重要屬性:Scan0 鎖定數(shù)據(jù)數(shù)組在內(nèi)存中的地址。 Stride 一個單行像素數(shù)據(jù)的寬度,以byte為單位。這一寬度是圖像像素寬度的整數(shù)倍或非整數(shù)倍,然后很有可能地再填充另外的一些字節(jié)。細(xì)節(jié)等下詳述。 PixelFormat 數(shù)據(jù)實際的像素格式,這對于找到正確的字節(jié)非常重要。 Width 鎖定影像的寬度 Height 鎖

34、定影像的高度 內(nèi)存中數(shù)組的Scan0和Stride的關(guān)系如下列圖:圖 5-5 Scan0與Stride關(guān)系圖屬性Stride,如圖中所示的那樣,持有行的寬度,以字節(jié)為單位??紤]到效率,行的寬度并不一定是確切的像素大小的倍數(shù)整數(shù)倍 Or 非整數(shù)倍。系統(tǒng)需要保證數(shù)據(jù)被裝入行,以4字節(jié)的邊界開始,并填補(bǔ)一些字節(jié)以形成4個字節(jié)倍數(shù)的布局。比方一幅24位的影像寬度為17像素,它的Stride的寬為52。每行數(shù)據(jù)將占317=51字節(jié),再加上填補(bǔ)的一個字節(jié),每行擴(kuò)展到52字節(jié),即134字節(jié);一幅4位的索引影像,寬度為17像素,它的Stride的值為12,9個字節(jié),更為準(zhǔn)確的說是8.5個字節(jié)為數(shù)據(jù)區(qū),然后還要

35、再填補(bǔ)另外的3個字節(jié)以形成4字節(jié)的邊界。一行中含有數(shù)據(jù)的局部的排列依據(jù)于PixelFormat。一幅24位的影像持有RGB數(shù)據(jù),每3個字節(jié)1個像素;24位的影像包含RGBA數(shù)據(jù),每4個字節(jié)1個像素。每1字節(jié)含有多于1個像素的像素格式pixel format,比方4位索引影像、1位索引影像,這類影像需要認(rèn)真處理,不要將同一字節(jié)中相鄰的像素混淆了。X,Y坐標(biāo),像素第一個元素的位置為Scan0+(YStride)+(X3)。這是blue字節(jié)的位置,接下來的2個字節(jié)分別含有g(shù)reen、red數(shù)據(jù)。 這樣,b0代表藍(lán)色,b1代表綠色,b2代表紅色。 unsafe for (int i = 0; i da

36、ta.Height; i = i + 1) for (int j = 0; j data.Width; j = j + 1) b = (byte*)(int)data.Scan0 + (i * data.Stride) + (j * 3); b0=0; b1=0; b2=0; 因為這樣的操作涉及到了C#里面的非平安代碼操作。所以要用unsafe 包起來。通過這種把圖片鎖進(jìn)內(nèi)存的方法,我們將可以快速的進(jìn)行圖片的遍歷和操作。但是另一個問題又出現(xiàn)了。在實際操作中,我們發(fā)現(xiàn)。在比擬前后兩張圖片時,因為保存與讀取的速度不相等的原因,軟件常常出錯,提示訪問了無法訪問的內(nèi)存空間。所以,我們針對這個問題,想出

37、了另外一個方法?;谝环N隊列的思想,如下列圖。圖 5-6 隊列圖片保存進(jìn)t緩沖區(qū),然后t把圖片傳給t-1。t-1與t-2進(jìn)行比擬,然后再做出隊操作。at - 2 = at - 1;at - 1 = at;t = t - 1;解決了以上的問題,我們就可以成功的把圖片中運(yùn)動的物體提取出來,并畫到一張新的圖片里面,為下一步操作做準(zhǔn)備。效果如下所示:圖5-7 基準(zhǔn)圖片圖5-8 變化圖片圖 5-9 運(yùn)動物體5.3 畫面去雜點完成了運(yùn)動物體提取后,我們要做的任務(wù)是去雜點。因為市面上攝象頭的質(zhì)量參差不齊,而且由于環(huán)境問題,拍攝出來的畫面肯定存在雜點。所謂的雜點,就是與我們想得到圖像信息不相干的點,我們一般叫

38、去噪。但是,噪聲在理論上可以定義為“不可預(yù)測,只能用概率統(tǒng)計方法來認(rèn)識的隨機(jī)誤差。因此將圖像噪聲看成是多維隨機(jī)過程是適宜的,因而描述噪聲的方法完全可以借用隨機(jī)過程的描述,即用其概率分布函數(shù)和概率密度分布函數(shù)。但在很多情況下,這樣的描述方法是很復(fù)雜的,甚至是不可能的。而實際應(yīng)用往往也不必要。通常是用其數(shù)字特征,即均值方差,相關(guān)函數(shù)等。因為這些數(shù)字特征都可以從某些方面反映出噪聲的特征。現(xiàn)在去雜的方式有多種,例如ICA變換,小波,灰度預(yù)測等,還有一些經(jīng)典的均值濾波,中值濾波,維納濾波等等。均值濾波算法,也稱線性濾波,主要思想為鄰域平均法,即用幾個像素灰度的平均值來代替每個像素的灰度。有效抑制加性噪聲

39、,但容易引起圖像模糊,假設(shè)圖像模糊,就會影響對運(yùn)動圖形是否人形的判斷。中值濾波,基于排序統(tǒng)計理論的一種能有效抑制噪聲的非線性平滑濾波信號處理技術(shù)。中值濾波的特點即是首先確定一個以某個像素為中心點的鄰域,一般為方形鄰域,也可以為圓形、十字形等等,然后將鄰域中各像素的灰度值排序,取其中間值作為中心像素灰度的新值,這里領(lǐng)域被稱為窗口,當(dāng)窗口移動時,利用中值濾波可以對圖像進(jìn)行平滑處理。其算法簡單,時間復(fù)雜度低,但其對點、線和尖頂多的圖像不宜采用中值濾波。很容易自適應(yīng)化。維納濾波,使原始圖像和其恢復(fù)圖像之間的均方誤差最小的復(fù)原方法,是一種自適應(yīng)濾波器,根據(jù)局部方差來調(diào)整濾波器效果,對于去除高斯噪聲效果明

40、顯。而我們通過思考,觀察和測試,發(fā)現(xiàn),提取出來的運(yùn)動圖像,根本上像素點都是連在一起的,而噪電那么隨便分布在圖片上,或一兩點,或三五點,都是不連續(xù)的。所以對于去噪,我們采用了55范圍去噪的方法。對于采用55去噪方法的好處,我們先來看下均值濾波的效果,如下列圖所示: 圖 5-10 原始圖像 圖5-11 加噪后 圖5-12 均值濾波后由上圖可以看出,均值濾波的去噪是對整張圖片中的像素點都進(jìn)行更改,這個算法放到我們的系統(tǒng)中就出現(xiàn)了一個問題,就是提取出來的運(yùn)動物體也被進(jìn)行了更改,更重要的一點就是,所謂的雜點,其實并沒有被去掉,而是RGB等屬性被更改了而已,這就對我們下一個模塊的人形判斷產(chǎn)生巨大影響。中值

41、濾波,維納濾波等無一例外都是更改雜點的灰度值等屬性到達(dá)去噪效果,無法到達(dá)我們系統(tǒng)對去噪的要求。所以,我們采用了55范圍去噪的方法。我們55去雜點方法,就是在55范圍內(nèi)遍歷像素,假設(shè)沒有內(nèi)容的像素點超過一個閾值,那么判斷該范圍內(nèi)的點都是不連續(xù)的,都是雜點,采用函數(shù)把這些雜點都去掉,就不會對下一模塊的判斷產(chǎn)生影響。我們通過圖像連通的特點,首先建立一個55的抽象模版。圖 5-13 去雜點如果在55=25個點中,存在圖像信息的點數(shù)少于一個閾值,那么我們認(rèn)為這些點不連通,當(dāng)作雜點處理,通過算法把這些雜點都全部去除。圖 5-14 去雜圖 5-15 去雜按照這個模版,把一張圖片分成假設(shè)干個模版。如圖5-14和圖5-15 當(dāng)一個模版掃描完后,直接跳入下一個模版。也就是說,我們掃描時,當(dāng)計算完一個模版,它的寬度值將加5,跳入下一個模版,高度值也是如此。當(dāng)然,我們還需要考慮,高與寬能不能被5整除,也就是說,可能這張圖片不能被假設(shè)干個完整的模版填充,有些局部的模版不完整。根據(jù)這個原因,我們做出了規(guī)定。在掃描圖片的時候,我們盡量把圖片當(dāng)成5X5格式來掃描,當(dāng)溢出時,不做任何操作。所以,掃描代碼必須由trycatch包裹起來,防止溢出造成程序錯誤。模版間跳轉(zhuǎn)代碼如下: for (int i = 0; i data2.Height; i = i + 5) for (i

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論