專利名稱:移動檢測環(huán)境變化的方法
技術領域:
本發(fā)明涉及一種移動檢測環(huán)境變化的方法,屬于安防領域,也屬于信息領域。
背景技術:
在目前的安防視頻監(jiān)控系統(tǒng)中,圖像序列的運動檢測及報警不僅僅可以自行 替代監(jiān)視人員的部分工作,提高監(jiān)視系統(tǒng)的自動化水平,而且也可提高監(jiān)控存儲 的效率。數字視頻監(jiān)控系統(tǒng)對圖像序列自動進行運動檢測, 一旦發(fā)現運動物體(絕 大多數是以人為目標)的大小和速度滿足一定條件,就發(fā)出報警信號來通知監(jiān)視 人員采取及時有效的處理。這可在很大程度上減輕監(jiān)視人員的視覺負擔。數字監(jiān) 控系統(tǒng)絕大多數都有存儲模塊,可對監(jiān)控場景圖像數據進行連續(xù)存儲。然而,由 于數字監(jiān)控系統(tǒng)的工作時間長,數據存儲量相當龐大,給存儲容量提出了較高的 要求。但是,存儲監(jiān)控圖像的目的幾乎都是記錄監(jiān)控場景中的動作,如果長時間 記錄無運動圖像,不僅僅耗費巨大的存儲量,而且存儲的信息量也極少,這就失 去了存儲的意義。這就需要有一個移動檢測的算法來獲取有信息含量的圖片,有 效地節(jié)省存儲數據,減少不必要的回放。由此可見,移動檢測在數字視頻監(jiān)控系 統(tǒng)中有較強的實用價值。
當今的智能監(jiān)控的發(fā)展趨勢,隨著需求的日益增長,移動檢測不再只用于交 通等大型場景的視頻監(jiān)控,而逐漸普及到千家萬戶以保證人身和財產安全。移動 檢測正在成為各種監(jiān)控服務及應用進一步發(fā)展的關鍵。目前用于普通家庭的視頻 監(jiān)控,不同于復雜的大型場景,其關鍵在于簡單、方便、易實現。只有具有這些 優(yōu)點,操作方便且價格便宜的產品才能滿足更多家庭的需求。而現在運用到視頻 監(jiān)控里的移動檢測技術復雜度過高,成本很高,雖然功能齊全,精度高,但不適 合家庭監(jiān)控這種小場景。對于這種實現移動檢測功能的簡單算法,需要解決三個 問題
(1) 攝像頭采集圖片并完成圖片格式轉換的問題。
(2) 簡單的判斷環(huán)境是否有外物入侵的算法問題。
(3) 關于有信息含量的圖片的存儲問題。
發(fā)明內容
本發(fā)明的目的就是為了克服上述現有技術的不足,提供一種移動檢測環(huán)境變 化的方法,該方法將攝像頭采集YUV圖片轉換成RGB格式,比較當前幀與平 均幀圖片間相同位置的R、 G、 B和亮度,將所得差異值與預定值比較判斷環(huán)境是 否變化,該方法實現簡單、操作方便且成本較低。
實現本發(fā)明目的采用的技術方案是 一種對環(huán)境變化的移動檢測方法先將采 集到的圖片轉成RGB格式,.然后將將每一幀RGB格式的圖片均分成mXn塊,從 R, G, B和亮度四個方面比較圖片間相同位置的差異,當差異大于相應的預定值 時,便認為環(huán)境發(fā)生變化。 上述方法包括以下步驟
(1) 將攝像頭采集的YUV格式圖片轉換為RGB格式圖片; 其中攝像頭采集圖像的方法為將攝像頭采集到的數據映像到內存中,操作
系統(tǒng)通過訪問結構體vmap讀出攝像頭采集的圖片的寬、高和類型;在未出現任 何異常的情況下,即從攝像頭存儲緩沖區(qū)中截取圖像,若圖像截取完畢,則把圖 像數據保存成文件的形式,然后將采集到的圖片存儲到緩存中,最后解除內存映 像并把內存釋放返回給操作系統(tǒng)。
根據定點運算法將圖像由YUV格式轉換成RGB格式,算法為
Y[i]=298*(i-16);
VR[i]=409*(i-128);
UG[i]=100*(i-128);
VG[i]=208*(i-128);
UB[i]=516*(i-128);
*pR=max(0,min(255,(Y[*pY]+VR[*pV]+128)>>8)); 〃R value *pB=max(0,min(255,(Y[*pY]+UB[*pU]+128)>>8)); 〃B value *pG=max(0,min(255,(Y[*pY]-UG[*pU]-VG[*pV]+128)>>8)); 〃G value。
(2) 將每一幀RGB格式的圖片分成10X10塊;
(3)比較當前幀與平均幀間相同位置的的亮度和RGB,得到差異值,將差 異值與預定值比較判斷環(huán)境是否變化,其具體步驟如下取一組待檢測幀圖片, 將該組待檢測幀圖片中的第一幀作為參照幀,第二幀與第--幀兩幀間相同位置即針對每一小塊進行R、 G、 B和亮度的比較,相減得差異值,根據差異值與預定 值的比較判斷確定布防區(qū)域內的場景有無發(fā)生變化,若差異值小于預定值則無變 化發(fā)生;接著第三幀與平均幀兩幀間相同位置即針對每一小塊進行R、 G、 B和 亮度的比較,相減得差異值,若其差異值小于預定值則無變化發(fā)生;接著第四幀 與平均幀兩幀間相同位置即針對每一小塊進行R、 G、 B和亮度的比較,相減得
差異值,將差異值與預定值的比較判斷,若其差異值小于預定值則無變化發(fā)生, 依次檢測該組每一幀圖片直至該組檢測幀檢測完畢,更新存儲區(qū)的圖片,再開始 對下一組待檢測幀圖片的幀間比較;如在上述檢測中若差異值大于預定值,便認 為有移動目標侵入即環(huán)境發(fā)生變化,結束此次比較,將存儲空間里的此組圖片轉 換成JPG格式保存到指定的硬盤里,然后更新存儲區(qū)圖片,繼續(xù)下一組待檢測 幀圖片的幀間比較。上述平均幀為所有比較過的差異值未超過預定值的幀信息總 和取均值。對于每組待檢測的圖片,其平均幀信息有著微弱的不斷變化,對于第 一幀,它本身就是參考幀,不存在比較,直接將其信息賦給平均幀信息;對于第 二幀,第一幀的信息就是要比較的平均幀信息;對于第三幀,若第二幀沒有產生 環(huán)境變化即差異值小于預定值,則前兩幀的信息平均值便是要比較的平均幀信 息,若第二幀產生變化即差異值大于預定值,則第一幀為平均幀。以此類推將比 較過的差異值未超過預定值的幀信息總和取均值即得平均幀。 本發(fā)明具有如下優(yōu)點
1. 本發(fā)明可在linux環(huán)境下獲取視頻和音頻數據的API接口 (Video4Linux) 便捷地獲取攝像頭數據,能方便地通過ioctl的VIDIOCGMBUF命令獲得攝像頭存 儲緩沖區(qū)的幀信息,并直接調用mraap通過內存映射的方式獲取數據,而后系統(tǒng) 調用ioctl的VIDIOCMCAPTURE,將圖像映射到內存中。
2. 圖像格式轉換時采用定點算法來轉換,比傳統(tǒng)的浮點算法要更快,效率更 高。將攝像頭采集到的YUV格式的圖片轉換成RGB格式,方便后期從亮度和R、 G、 B四個方面來比較每一幀圖片之間差異。
3. 核心的移動檢測技術采用了參考平均幀分塊比較亮度和R、 G、 B的算法, 相對于相鄰幀差比較法,進一步忽略了幀間的微小差異,使保存下來的圖片的信 息含量提高,避免了因毫無信息含量圖片的大量存儲導致硬盤空間緊缺而增加監(jiān) 控人員提取信息的負擔等諸多弊端。4. 將每幅圖片分成10X10塊進行比較,只要發(fā)現有某一塊出現大于預定值 的差異,便視為移動發(fā)生,結束比較。這種檢測判斷的方法不僅提高比較的精確 度,也提高了計算效率,大大降低了算法的復雜度。
5. 對于顯示有異常情況發(fā)生的圖片,通過JPG處理后保存下來,因為JPG 格式包含許多色彩的緩和變化,為后期進行圖片處理,獲取更多的信息含量提供 了便利。
圖1為本發(fā)明的流程圖。
圖2為平均幀信息圖。
圖3為當前幀信息圖。
圖4為圖3與圖2之間的差異值信息圖。
具體實施例方式
本發(fā)明提供的是一種對環(huán)境變化的移動檢測方法,下面結合實例及附圖對本 發(fā)明作進一步說明,但不限定本發(fā)明。
下面以Linux平臺下實現對環(huán)境變化的移動檢測為例,具體說明如下 本發(fā)明提供的linux環(huán)境下實現移動檢測功能包括以下模塊
(1) 攝像頭初始化模塊
連接USB攝像頭,啟動相應的攝像頭驅動,成功連接后給對象分配空間并 初始化,同時給待比較的圖片分配存儲空間,根據需要設置攝像頭的分辨率和采 樣頻率;
(2) 圖像釆集模塊
包括采集和轉換兩部分。采集在初始化階段完成一系列的參數設置之后, 通過攝像頭定點采集監(jiān)視區(qū)域的畫面;轉換該攝像頭采集到的圖片原為YUV 格式,為滿足下面檢測技術的需要,將其轉換為RGB格式并存儲到預先分配好 的存儲空間里;
(3) 移動檢測模塊
通過比較當前幀與平均幀的亮度和RGB來判斷是否有環(huán)境的變化發(fā)生,當 其變化超過預定值時,便認為環(huán)境發(fā)生變化,返回相應值。平均幀的定義是將所 有比較過的變化不大的幀信息總和取均值。當檢測到有外物入侵時產生環(huán)境變化時,將存儲空間里的那組圖片轉換成 JPG格式保存到指定的硬盤里。再繼續(xù)采集圖片,如此循環(huán)進行檢測。
本發(fā)明在linux環(huán)境下實現移動檢測的操作流程如圖1所示,包括以下具體 歩驟
(1) 通過—devfd=open(devname.c_str(),0—RDONLY)與攝像頭建立連接;通 過函數cam.set—resolution(width, height)和cam.set—$s(15),完成對攝像頭的參數 設置。
(2) 攝像頭連接成功后,調用函數take—photo ()和yuv2rgb()來實現攝像頭 對圖像的采集和格式的轉換。
在這個過程中用到數據結構struct video —mbuf mbuf;通過ioctl的 VIDIOCGMBUF命令獲得攝像頭存儲緩沖區(qū)的幀信息。此時數據結構struct video —mmap vmap通過mmap方式獲取數據,直接調用mmap通過內存映射的 方式獲取數據,通過訪問結構體vmap就可以讀出攝像頭采集的圖片的寬、高和 類型,而后系統(tǒng)調用ioctl的VIDIOCMCAPTURE,將圖像映射到內存中。在未 出現任何異常的情況下,即從攝像頭存儲緩沖區(qū)中截取圖像,若圖像截取完畢, 則把圖像數據保存成文件的形式,將采集到的圖片存儲到緩存一buffer中。最后, 調用rmrnmap解除內存映像并把內存釋放返回給操作系統(tǒng)。
繼而,按照預定的像素值和圖片格式來存儲圖像。根據定點算法,將原生圖 像的YUV格式轉換成RGB格式的圖像信息,算法體現為
Y[i]=298*(i-16);
VR[i]=409*(i-128);
UG[i]=100*(i-128);
VG[i]=208*(i-128);
UB[i]=516*(i-128);
*pR=max(0,min(255,(Y[*pY]+VR[*pV]+128)>>8)); 〃R value *pB=max(0,min(255,(Y[*pY]+UB[*pU]+128)〉〉8)); 〃B value *pG=max(0,min(255,(Y[*pY]-UG[*pU]-VG[*pV]+128) 8)); 〃G value 而后將緩沖區(qū)中的圖片信息拷貝到應用程序中,然后再控制和處理圖片數 據,該過程通過拷貝函數
memcpy(images[buffer_pos], cam.get一rgbbuffer(), IMAGE—BUFFER)來完成。將轉換后的RGB圖像存儲在4mages[]指針數組中,方便后期的圖像比
當4mage[]中存滿五幅圖片時,進入detect—motion(),比較五幅圖片的差異。 (3)將每幅圖片分成10X10塊,進行圖片間相同位置的塊比較。采用for 循環(huán)依次對每幅圖片每個像素塊進行比較,每比較完一個像素塊,重新獲取下個 像素塊的位置,繼續(xù)一個像素塊的比較,在未發(fā)現異常的情況下比較完整幅圖片, 接著更新平均幀的信息,繼續(xù)下一幅圖片的像素塊的比較,直至檢測到移動,或 者本組圖片檢測完未發(fā)現產生環(huán)境變化,重新檢測下一組圖片。
這個過程中首先要定義一個結構體
struct Pixel {
〃R值 〃G值 〃B值
〃橫坐標 〃縱坐標
unsigned char unsigned char unsigned char unsigned int unsigned int
red; green; blue; x二
y;
};
在調用detect—motion函數進行幀間比較時,定義了一個Pixel類型的數組 pixelblock[MOTION DETECTION—BLOCK] [MOTION—DETECTION BLOCK],
這個數組也稱為像素塊數組,用于存儲每幀圖片上每個像素塊的信息(如該像素 塊的R、 G、 B值和該像素塊的橫坐標和縱坐標數據)進行幀間比較。其中, MOTION—DETECTION—BLOCK是一個宏定義,在此例中為10。
然后獲取當前像素塊的亮度和RGB信息,與平均幀信息進行比較。對于每 幅圖片,其平均幀信息有著微弱的不斷變化。對于第一幀,它本身就是參考幀, 不存在比較,直接將其信息賦給平均幀信息;對于第二幀,第一幀的信息就是要 比較的平均幀信息;對于第三幀,前兩幀的信息平均值便是要比較的平均幀信息, 以此類推得出平均幀。
圖片間相同位置的塊比較即塊間亮度和RGB信息的比較步驟如下 步驟一像素塊的當前亮度與平均亮度相減,當其差異的絕對值大于預定的 亮度值時,便認為發(fā)生環(huán)境變化即停止本次檢測,存儲本組圖片;步驟二若亮度值差異未超過預定值,則繼續(xù)判斷R值,用像素塊的當前R 值與平均R值相減,當其差異的絕對值大于預定的R值時,便認為發(fā)生移動即 產生環(huán)境變化停止本次檢測,存儲本組圖片;
步驟三若R值差異未超過預定值,則繼續(xù)判斷B值,用像素塊的當前B 值與平均B值相減,當其差異的絕對值大于預定的B值時,便認為發(fā)生移動即 產生環(huán)境變化停止本次檢測,存儲本組圖片;
步驟四若B值差異未超過預定值,則繼續(xù)判斷G值,用像素塊的當前G 值與平均G值相減,當其差異的絕對值大于預定的G值時,便認為發(fā)生移動即 產生環(huán)境變化停止本次檢測,存儲本組圖片;
步驟五若G值差異仍未超過預定值,則獲得下一像素塊的指針,接著進 行下一像素塊的比較,如此循環(huán)。
下面結合附圖對上述移動檢測方法做詳細的說明。
首先,比較參考幀圖2和當前幀圖3的第一行第一個像素塊的亮度和RGB 信息,若其各項差異值均未超過相應預定值,繼而比較第一行第二個像素塊…… 依次類推,比較完第一行的所有像素塊,均未發(fā)現明顯差異。此處的預定值都是 宏定義的,可以方便根據具體環(huán)境所需靈敏度來調整,該例中的亮度,R、 G、 B 的差異預定值分別設為150, 40, 40, 40。
接著,從左到右依次比較第二行的像素塊,若其各項差異值均未超過相應預 定值,繼而比較第三行,第四行……,在本實施例中,檢測到當前幀在位于第四 行的第七個像素塊的亮度值為168,然而參考幀圖2相應位置的像素塊的平均亮 度值為377,兩者的差異值為209明顯大于之前的差異預定值150。就此確定為 移動發(fā)生即產生環(huán)境變化,停止檢測,不再繼續(xù)比較兩幀的RGB信息,從而提 高算法的效率,于此同時保存該組圖片。從當前幀與參考幀的差異值信息圖4 可以清楚地判斷從參考幀圖2到當前幀圖3信息的變化。
圖片的存儲通過調用函數viod compressjpeg()將圖片存儲區(qū)中的RGB圖像 轉換成JPG格式存儲在相應的硬盤里,接著用新捕捉到的圖片更新存儲區(qū),開 始下一輪的檢測,如此循環(huán),直至手動停止。若仍未檢測到有移動或變化發(fā)生, 則每比較完一組圖片后,用新捕捉到的圖片更新存儲區(qū),繼續(xù)一下輪的檢測,如 此循環(huán),直至手動停止。
權利要求
1. 一種移動檢測環(huán)境變化的方法,其特征在于包括以下步驟(1)將攝像頭采集到YUV格式的圖片轉換為RGB格式的圖片;(2)將每一幀RGB格式的圖片均分成m×n塊;(3)比較當前幀與平均幀圖片間相同位置的R、G、B和亮度,得到兩幀圖片之間的差異值,將差異值與預定值比較判斷環(huán)境是否變化,當差異值大于相應的預定值時,即環(huán)境產生變化。
2. 根據權利要求1所述移動檢測環(huán)境變化的方法,其特征在于在步驟(1)中 將攝像頭采集到YUV格式的圖片數據映像到內存中,操作系統(tǒng)通過訪問結構體讀 出攝像頭采集的圖片的寬、高和類型,然后將采集到的YUV格式圖片轉換為RGB 格式圖片后存儲到緩存中,最后解除內存映像并把內存釋放返回給操作系統(tǒng)。
3. 根據權利要求1或2所述對環(huán)境變化的移動檢測方法,其特征在于根據定點 運算法將圖像由YUV格式轉換成RGB格式,算法為<formula>formula see original document page 2</formula>
4. 根據權利要求1所述移動檢測環(huán)境變化的方法,其特征在于在步驟(3)中,取一組待檢測幀圖片,將該組待檢測幀圖片中的第一幀作為參照幀,第二幀與第一幀兩幀間相同位置即針對每一小塊進行R、 G、 B和亮度的比較,相減得差異 值,根據差異值與預定值的比較判斷確定布防區(qū)域內的場景有無發(fā)生變化,若差 異值小于預定值則無變化發(fā)生;接著第三幀與平均幀兩幀間相同位置即針對每一 小塊進行R、 G、 B和亮度的比較,相減得差異值,若其差異值小于預定值則無 變化發(fā)生;接著第四幀與平均幀兩幀間相同位置即針對每一小塊進行R、 G、 B 和亮度的比較,相減得差異值,將差異值與預定值的比較判斷,若其差異值小于預定值則無變化發(fā)生,依次檢測該組每一幀圖片直至該組檢測幀檢測完畢,更新 存儲區(qū)的圖片,再開始對下一組待檢測幀圖片的幀間比較;如在上述檢測中若差 異值大于預定值,便認為有移動目標侵入即環(huán)境發(fā)生變化,結束此次比較,將存 儲空間里的此組圖片轉換成JPG格式保存到指定的硬盤里,然后更新存儲區(qū)圖 片,繼續(xù)下一組待檢測幀圖片的幀間比較,其中上述平均幀為所有比較過的差異 值未超過預定值的幀信息總和取均值。
全文摘要
本發(fā)明公開了一種移動檢測環(huán)境變化的方法,先將采集到YUV格式的圖片轉成RGB格式的圖片,然后將每一幀RGB格式的圖片分成10×10塊,從R,G,B和亮度四個方面比較圖片間相同位置的差異,當差異大于相應的預定值時,即環(huán)境產生變化。本方法對環(huán)境變化的檢測不僅具有較高的精確度,也提高了計算效率,大大降低了算法的復雜度,本發(fā)明適合用于家庭視頻監(jiān)控。
文檔編號G06T7/20GK101281649SQ20081004787
公開日2008年10月8日 申請日期2008年5月30日 優(yōu)先權日2008年5月30日
發(fā)明者沈古月, 胡瑞敏, 鐃 陳, 戈 高 申請人:武漢大學