生成事件視頻序列的方法和系統(tǒng)以及包括此系統(tǒng)的攝像機(jī)的制作方法
【專利摘要】公開了一種生成事件視頻序列的方法和系統(tǒng)以及包括此系統(tǒng)的攝像機(jī)。該方法包括:接收輸入圖像幀,輸入圖像幀被編碼為設(shè)置成畫面組的圖像幀序列,每個(gè)畫面組具有GOP結(jié)構(gòu)。該方法還包括在先進(jìn)先出緩沖器中存儲(chǔ)圖像幀的事件前序列(SEQ1),所述事件前序列(SEQ1)具有預(yù)定的第一GOP結(jié)構(gòu);在接收到事件通知后,從緩沖器中取回事件前序列(SEQ1);以及通過(guò)將圖像幀的事件前序列(SEQ1)與事件后序列(SEQ2)組合來(lái)生成事件視頻序列,所述事件后序列(SEQ2)具有不同于所述第一GOP結(jié)構(gòu)的第二GOP結(jié)構(gòu)。還公開了一種用于生成事件視頻序列的系統(tǒng)以及一種包括此系統(tǒng)的攝像機(jī)和一種具有適于在由處理器執(zhí)行時(shí)實(shí)施所述方法的指令的計(jì)算機(jī)程序產(chǎn)品。
【專利說(shuō)明】
生成事件視頻序列的方法和系統(tǒng)以及包括此系統(tǒng)的攝像機(jī)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及視頻序列捕捉領(lǐng)域,更具體地涉及生成編碼圖像幀的視頻序列?!颈尘凹夹g(shù)】
[0002]在諸如網(wǎng)絡(luò)攝像機(jī)監(jiān)控系統(tǒng)的數(shù)字視頻系統(tǒng)中,在傳輸視頻序列之前使用各種視頻編碼方法對(duì)其進(jìn)行壓縮。在許多數(shù)字視頻編碼系統(tǒng)中,使用兩種主要的模式來(lái)壓縮一連串視頻幀中的視頻幀:幀內(nèi)模式和幀間模式。在幀內(nèi)模式中,通過(guò)使用單幀的給定信道內(nèi)像素的空間冗余,經(jīng)由預(yù)測(cè)、轉(zhuǎn)化和熵編碼,對(duì)亮度和色度信道進(jìn)行編碼。由此,對(duì)像素的宏塊的編碼可參照同一幀中的另一類似宏塊進(jìn)行。該編碼幀被稱為幀內(nèi)編碼幀,并且還可被稱為1-幀。幀間模式不利用分離的幀之間的時(shí)間冗余,而是依賴于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)技術(shù),其針對(duì)選定的像素塊、逐幀編碼像素中的運(yùn)動(dòng),從而根據(jù)一個(gè)或多個(gè)其他幀來(lái)預(yù)測(cè)一幀的多個(gè)部分。由此,對(duì)像素的宏塊的編碼可參照另一先前解碼的幀中的另一類似宏塊進(jìn)行。該編碼幀被稱為幀間編碼幀,并且可被稱為P-幀(前向預(yù)測(cè)幀),其可指解碼順序中的先前幀;或者可被稱為B-幀(雙向預(yù)測(cè)幀),其可具有用于預(yù)測(cè)的、幀間任一隨意顯示-順序關(guān)系,并且可涉及兩個(gè)或更多個(gè)先前解碼的幀。而且,編碼幀設(shè)置為畫面組或G0P,其中每個(gè)畫面組起始于 I _幀,接著的幀是P-幀或B-幀。畫面組的結(jié)構(gòu)可稱為G0P結(jié)構(gòu)。G0P結(jié)構(gòu)的其中一方面是畫面組中幀的數(shù)目,其通常被稱為G0P長(zhǎng)度。G0P長(zhǎng)度可從1開始變化至例如61440, “1”意味著畫面組中僅有幀內(nèi)編碼幀而沒(méi)有幀間編碼幀,“61440”意味著畫面組中在一個(gè)幀內(nèi)編碼幀后接著61439個(gè)幀間編碼幀。由于幀間編碼幀通常需要比幀內(nèi)編碼幀更多的位來(lái)表示圖像,具有較長(zhǎng)的G0P長(zhǎng)度的運(yùn)動(dòng)視頻通常將比具有較短的G0P長(zhǎng)度的運(yùn)動(dòng)視頻產(chǎn)生更低的輸出碼率。
[0003]在接收到編碼視頻序列的地點(diǎn),編碼幀被解碼。與網(wǎng)絡(luò)攝像機(jī)監(jiān)控系統(tǒng)相關(guān)的問(wèn)題是用于傳輸編碼視頻的可用帶寬。在采用了大量攝像機(jī)的系統(tǒng)中尤其如此。而且,在可用帶寬較低的情形下這一問(wèn)題尤其重要,比如當(dāng)視頻序列即將被傳輸給比如移動(dòng)電話、PDA或平板電腦的移動(dòng)裝置時(shí)。關(guān)于圖像的存儲(chǔ),出現(xiàn)了類似的問(wèn)題,例如,當(dāng)在攝像機(jī)的機(jī)載SD 卡中存儲(chǔ)圖像時(shí)。必須做出妥協(xié)以在可用帶寬或存儲(chǔ)空間與期望的高質(zhì)量視頻圖像之間進(jìn)行平衡。已使用了大量方法和系統(tǒng)來(lái)控制編碼從而降低從攝像機(jī)進(jìn)行傳輸?shù)拇a率。這些已知的方法和系統(tǒng)通常施加了碼率限制并且控制編碼以使得來(lái)自攝像機(jī)的輸出碼率總是低于碼率限制。以此方式,可確保足夠的可用帶寬以使得系統(tǒng)中的所有攝像機(jī)可傳輸其視頻序列給接收地點(diǎn),例如,控制中心,操作員可在接收地點(diǎn)監(jiān)控來(lái)自系統(tǒng)的攝像機(jī)的視頻并且可記錄視頻供以后用。然而,對(duì)所有攝像機(jī)施加碼率限制可能會(huì)不時(shí)地導(dǎo)致不期望的低圖像質(zhì)量,因?yàn)椴还茉谑鼙O(jiān)控場(chǎng)景中發(fā)生了什么,碼率限制可能需要嚴(yán)重壓縮包含大量細(xì)節(jié)的圖像。最近,已提出使用改變G0P結(jié)構(gòu)的各種方案來(lái)控制輸出碼率。例如,可以變化G0P長(zhǎng)度以使得在受監(jiān)控場(chǎng)景中存在極少運(yùn)動(dòng)或者不存在運(yùn)動(dòng)時(shí)、使用較長(zhǎng)的G0P長(zhǎng)度從而降低輸出碼率,而在場(chǎng)景中存在運(yùn)動(dòng)時(shí)減少G0P長(zhǎng)度從而允許以更高碼率為代價(jià)獲得更高質(zhì)量的圖像。
[0004]視頻序列的記錄,特別是在監(jiān)控或監(jiān)視應(yīng)用中,可能基于一個(gè)或多個(gè)事件觸發(fā)器, 例如,運(yùn)動(dòng)檢測(cè)事件觸發(fā)器。以此方式,可以在事件發(fā)生時(shí)啟動(dòng)記錄,比如當(dāng)在先前靜止的場(chǎng)景中發(fā)生移動(dòng)時(shí)。當(dāng)記錄基于事件觸發(fā)器時(shí),通常有益的是還記錄事件前視頻序列。例如,如果記錄是由在感興趣的區(qū)域(代表受監(jiān)控場(chǎng)景的一部分)中移動(dòng)的人觸發(fā)的,則還可能對(duì)記錄顯示了人是如何移動(dòng)到場(chǎng)景的那部分中的視頻序列感興趣。類似地,通常有益的是還記錄捕捉了在人已經(jīng)移出了感興趣的區(qū)域之后發(fā)生了什么的事件后(post-event)序列。為了能夠在事件發(fā)生時(shí)記錄事件前(pre-event)視頻序列,可持續(xù)地在先進(jìn)先出緩沖器 (還被稱為FIFO緩沖器)中緩沖圖像幀。當(dāng)事件發(fā)生時(shí),從緩沖器中取回圖像幀以使得可在該事件處開始的視頻序列之前記錄這些圖像幀。然后,在事件過(guò)去之后,可繼續(xù)記錄預(yù)定時(shí)間。事件前和事件后序列的時(shí)間長(zhǎng)度可由用戶設(shè)定。
[0005]然而,如果為了控制碼率而變化G0P長(zhǎng)度,則不可能確保事件前序列是可查看的。 這是因?yàn)榻獯a必須從幀內(nèi)編碼幀開始。如果事件前緩沖器中的第一圖像是幀間編碼幀,則此幀間編碼幀參照的在先編碼幀已因用于此緩沖器的FIFO原理而丟失。取決于所使用的 G0P長(zhǎng)度和事件前序列的時(shí)間設(shè)定,在事件前緩沖器中可能存在幀內(nèi)編碼幀,但該幀內(nèi)編碼幀來(lái)自于比用戶期望的更靠近事件的時(shí)間點(diǎn)??赏ㄟ^(guò)對(duì)用戶設(shè)定的事件前時(shí)間增加預(yù)定的安全周期,提高在事件前緩沖器中存在來(lái)自事件之前足夠長(zhǎng)時(shí)間點(diǎn)的幀內(nèi)編碼幀的可能性,以使得在事件前緩沖器中所存儲(chǔ)的時(shí)間實(shí)際上比用戶已設(shè)定為事件前記錄時(shí)間的多若干秒。同樣地,這需要較大的緩沖器,當(dāng)使用較短的G0P長(zhǎng)度時(shí),其將不必要地大。而且,如果 G0P長(zhǎng)度較長(zhǎng),則將仍沒(méi)有用于足夠數(shù)量的幀的空間來(lái)確保緩沖器中存在來(lái)自設(shè)定的事件前時(shí)間之前的時(shí)間點(diǎn)的幀內(nèi)編碼幀。因此,可見仍存在對(duì)生成事件視頻序列的改進(jìn)方法的需求。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種生成事件視頻序列的方法,其使得即使采用了可變G0P 長(zhǎng)度,也有可能確保可以記錄或者顯示期望時(shí)間長(zhǎng)度的事件前視頻序列。進(jìn)一步的目的是提供一種生成事件視頻序列的方法,其能夠在G0P結(jié)構(gòu)以其他方式變化時(shí)也記錄或顯示事件前序列。
[0007]本發(fā)明的進(jìn)一步的目的是提供一種用于生成事件視頻序列的系統(tǒng),其使得即使使用了可變G0P結(jié)構(gòu)、并且更具體地使用了可變G0P長(zhǎng)度,也有可能生成包括期望時(shí)間長(zhǎng)度的事件前序列的視頻序列。
[0008]根據(jù)第一方面,這些目的全部或者至少部分地通過(guò)生成事件視頻序列的方法實(shí)現(xiàn),該方法包括:接收輸入圖像幀,輸入圖像幀被編碼為設(shè)置成畫面組的圖像幀序列,每個(gè)畫面組包括幀內(nèi)編碼幀和零或更多個(gè)后續(xù)幀間編碼幀;所述圖像幀序列中的每個(gè)畫面組具有G0P結(jié)構(gòu);在先進(jìn)先出緩沖器中存儲(chǔ)圖像幀的事件前序列;所述事件前序列具有預(yù)定的第一 G0P結(jié)構(gòu);接收事件通知;在接收到所述事件通知后,從所述緩沖器中取回所述事件前序列;以及通過(guò)將圖像幀的所述事件前序列與事件后序列組合來(lái)生成事件視頻序列,所述事件后序列具有不同于所述第一 G0P結(jié)構(gòu)的第二G0P結(jié)構(gòu)。以這種方式,有可能使用可變G0P結(jié)構(gòu)來(lái)例如控制輸出碼率,并且同時(shí)確保在事件視頻序列中可包含有用的期望時(shí)間長(zhǎng)度的事件前視頻序列。由此,預(yù)定的G0P結(jié)構(gòu)用于事件前序列,而另一G0P結(jié)構(gòu)用于事件后序列。
[0009]第一 GOP結(jié)構(gòu)與所述第二GOP結(jié)構(gòu)的區(qū)別可在于:第一 GOP結(jié)構(gòu)的第一 GOP長(zhǎng)度不同于第二G0P結(jié)構(gòu)的第二G0P長(zhǎng)度,每個(gè)G0P長(zhǎng)度是由包含在相應(yīng)的畫面組中的幀的數(shù)目定義的。[〇〇1〇]第二G0P長(zhǎng)度可長(zhǎng)于所述第一 G0P長(zhǎng)度。例如,用戶可設(shè)置待使用的G0P長(zhǎng)度,過(guò)長(zhǎng)的G0P長(zhǎng)度可用于整個(gè)畫面組以適應(yīng)于事件前緩沖器。較短的G0P長(zhǎng)度在此情況下可用于事件前序列。
[0011]第一 G0P長(zhǎng)度可以是預(yù)定的,而第二G0P長(zhǎng)度可以是動(dòng)態(tài)的。如果通過(guò)改變G0P長(zhǎng)度來(lái)控制輸出碼率,則這可以是有用的。將適應(yīng)于事件前緩沖器的、預(yù)定的、靜態(tài)的G0P長(zhǎng)度可用于事件前序列從而確保可提供可查看的、足夠長(zhǎng)度的事件前序列。
[0012]根據(jù)該方法的變型,動(dòng)態(tài)G0P長(zhǎng)度是基于所確定的一個(gè)或多個(gè)輸入圖像幀的運(yùn)動(dòng)水平、一個(gè)或多個(gè)輸入圖像幀的噪聲水平、編碼所述輸入圖像幀時(shí)的幀率或者為編碼所述圖像幀而設(shè)定的碼率限制(bit rate limit)中的至少一個(gè)而設(shè)定的。例如,如果在圖像幀中存在高水平運(yùn)動(dòng),則可減小G0P長(zhǎng)度從而提供高質(zhì)量圖像。進(jìn)一步地,如果噪聲水平高(其可能會(huì)被誤認(rèn)為是高水平運(yùn)動(dòng)),則可增加G0P長(zhǎng)度從而減小輸出碼率。
[0013]預(yù)定的G0P結(jié)構(gòu)可通過(guò)用戶輸入來(lái)設(shè)定。[〇〇14]根據(jù)第二方面,上述目的全部或者至少部分地通過(guò)用于生成事件視頻序列的系統(tǒng)實(shí)現(xiàn),所述系統(tǒng)包括:圖像接收器,被設(shè)置為接收輸入圖像幀,輸入圖像幀被編碼為設(shè)置成畫面組的圖像幀序列,每個(gè)畫面組包括幀內(nèi)編碼幀和零或更多個(gè)后續(xù)幀間編碼幀,所述圖像幀序列中的每個(gè)畫面組具有G0P結(jié)構(gòu);緩沖器,被設(shè)置為基于先進(jìn)先出而存儲(chǔ)圖像幀的事件前序列,所述事件前序列具有預(yù)定的第一G0P結(jié)構(gòu);事件通知接收器,被設(shè)置為接收事件通知;生成模塊,被設(shè)置為從所述緩沖器取回事件前序列,并且在接收到事件通知后將圖像幀的事件前序列與事件后序列組合,所述事件后序列具有不同于所述第一 G0P結(jié)構(gòu)的第二 G0P結(jié)構(gòu)。通過(guò)這樣的系統(tǒng),有可能生成包括期望時(shí)間長(zhǎng)度的事件前視頻序列的事件視頻序列,并且仍將利用可變或動(dòng)態(tài)G0P結(jié)構(gòu)的優(yōu)勢(shì)。[0〇15]在系統(tǒng)的實(shí)施例中,第一G0P結(jié)構(gòu)與第二G0P結(jié)構(gòu)的區(qū)別在于所述第一G0P結(jié)構(gòu)的第一 G0P長(zhǎng)度不同于所述第二G0P結(jié)構(gòu)的第二G0P長(zhǎng)度,每個(gè)G0P長(zhǎng)度是由包含在相應(yīng)畫面組中的幀的數(shù)目定義的。
[0016]第二G0P長(zhǎng)度可長(zhǎng)于第一 G0P長(zhǎng)度。這使得即使該較長(zhǎng)的G0P長(zhǎng)度對(duì)于事件前緩沖器而言過(guò)長(zhǎng),也有可能例如對(duì)事件后序列使用較長(zhǎng)的G0P長(zhǎng)度從而降低輸出碼率。
[0017]第一G0P長(zhǎng)度可以是預(yù)定的,而所述第二G0P長(zhǎng)度是動(dòng)態(tài)的。由此,第一G0P長(zhǎng)度可由用戶預(yù)編程或設(shè)定,而第二G0P長(zhǎng)度可隨著例如受監(jiān)控的場(chǎng)景中的變化而變化。
[0018]根據(jù)一實(shí)施例,系統(tǒng)還包括G0P長(zhǎng)度模塊,該G0P長(zhǎng)度模塊被設(shè)置為基于所確定的一個(gè)或多個(gè)輸入圖像幀的運(yùn)動(dòng)水平、一個(gè)或多個(gè)輸入圖像幀的噪聲水平、編碼所述輸入圖像幀時(shí)的幀率或者為編碼所述圖像幀而設(shè)定的碼率限制中的至少一個(gè)來(lái)設(shè)定所述動(dòng)態(tài)G0P 長(zhǎng)度。這可能例如能夠節(jié)省碼率。
[0019]系統(tǒng)可進(jìn)一步包括用戶輸入模塊,該用戶輸入模塊被設(shè)置為接收用于設(shè)定所述預(yù)定的G0P長(zhǎng)度的用戶輸入。由此,用戶可設(shè)定待用于事件前緩沖器的G0P長(zhǎng)度。
[0020]根據(jù)第三方面,上述目的全部或者至少部分地通過(guò)包括根據(jù)第二方面的系統(tǒng)的攝像機(jī)實(shí)現(xiàn)。攝像機(jī)通??梢砸耘c該系統(tǒng)相同的方式實(shí)現(xiàn)并且具有伴隨其的優(yōu)勢(shì)。
[0021]根據(jù)第四方面,上述目的全部或者至少部分地通過(guò)包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品實(shí)現(xiàn),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有適于在由處理器執(zhí)行時(shí)實(shí)施根據(jù)第一方面的方法的指令。處理器可為具有處理能力的任意類型的裝置,例如,中央處理單元(CPU)、圖形處理單元(GPU)、在集成電路中實(shí)施的定制處理裝置、ASIC、FPGA或包括分立部件的邏輯電路。
[0022]在此使用的術(shù)語(yǔ)“事件”應(yīng)以廣義方式解釋。由此,事件可為,例如,通過(guò)諸如運(yùn)動(dòng)檢測(cè)算法的視頻分析算法生成的或者通過(guò)諸如門觸點(diǎn)或PIR傳感器的外部裝置生成的報(bào)警事件;由攝像機(jī)系統(tǒng)生成的系統(tǒng)事件,比如錯(cuò)誤通知;或者用戶輸入事件,比如命令輸入。 [〇〇23] 本發(fā)明的適用性的進(jìn)一步的范圍將通過(guò)下文中給出的詳細(xì)說(shuō)明而變得顯而易見。 然而,應(yīng)理解的是,表示本發(fā)明優(yōu)選實(shí)施例的詳細(xì)說(shuō)明和具體實(shí)例僅僅是以例示方式給出的,因?yàn)楦鶕?jù)此詳細(xì)說(shuō)明,本發(fā)明范圍內(nèi)的各種變化和修改對(duì)于本領(lǐng)域技術(shù)人員而言是顯而易見的。
[0024]因此,應(yīng)理解的是,本發(fā)明不限于所描述的裝置的具體元件部分或所描述的方法的步驟,因?yàn)榇搜b置和方法可發(fā)生變化。還應(yīng)理解的是,在此使用的技術(shù)術(shù)語(yǔ)僅用于描述具體實(shí)施例的目的,并非旨在是限制性的。必須注意的是,在說(shuō)明書和隨附權(quán)利要求書中使用的冠詞“一”、“該”和“所述”意指除非在上下文中另外明確指示、存在一個(gè)或多個(gè)元件。因此,例如,當(dāng)提及“一對(duì)象”或“該對(duì)象”時(shí),可包括若干對(duì)象,以此類推。而且,詞語(yǔ)“包括”不排除其他元件或步驟。【附圖說(shuō)明】
[0025]現(xiàn)在將通過(guò)舉例方式、參照隨附示意性附圖更詳細(xì)地描述本發(fā)明,附圖中:
[0026]圖1是由攝像機(jī)監(jiān)控的場(chǎng)景的視圖;[0〇27]圖2是編碼的圖像幀序列的圖不;[0〇28]圖3是事件視頻序列的圖不;
[0029]圖4是生成事件視頻序列的方法的流程圖;以及
[0030]圖5是用于生成事件視頻序列的系統(tǒng)的框圖?!揪唧w實(shí)施方式】
[0031]在圖1中顯示了通過(guò)攝像機(jī)1監(jiān)控的場(chǎng)景。在該場(chǎng)景中存在具有門3的建筑物2。攝像機(jī)1在此實(shí)例中用于監(jiān)控門3前的區(qū)域,尤其是門3附近的人的運(yùn)動(dòng)。
[0032]攝像機(jī)1捕捉該場(chǎng)景的圖像,然后對(duì)捕捉到的圖像執(zhí)行視頻運(yùn)動(dòng)檢測(cè)算法。攝像機(jī) 1被設(shè)定為基于根據(jù)運(yùn)動(dòng)檢測(cè)算法的事件來(lái)記錄視頻。經(jīng)由圖形用戶界面,用戶可定義場(chǎng)景圖像中感興趣的區(qū)域,將在此區(qū)域中執(zhí)行運(yùn)動(dòng)檢測(cè)算法。例如,用戶可能僅對(duì)門3前的運(yùn)動(dòng)感興趣,比如道路5上的運(yùn)動(dòng),但對(duì)灌木叢4的搖動(dòng)運(yùn)動(dòng)不感興趣。由此,用戶可將感興趣的區(qū)域定義為覆蓋門3前方的期望區(qū)域但不覆蓋灌木叢4。[〇〇33]為了能夠在記錄中包括事件前視頻序列,攝像機(jī)1具有FIFO緩沖器(圖5中的12), 將在下文中結(jié)合圖4和圖5對(duì)其進(jìn)行進(jìn)一步討論。當(dāng)運(yùn)動(dòng)檢測(cè)算法確定感興趣的區(qū)域中存在運(yùn)動(dòng)時(shí),生成事件。此事件觸發(fā)對(duì)捕捉的圖像以及在事件時(shí)間點(diǎn)處緩沖器中圖像的記錄。然后,繼續(xù)記錄直至運(yùn)動(dòng)檢測(cè)算法不再檢測(cè)到感興趣的區(qū)域內(nèi)的運(yùn)動(dòng)。為了在事件之后同樣記錄該場(chǎng)景的視頻序列以使得用戶可以看到在人離開感興趣的區(qū)域之后發(fā)生了什么,可設(shè)定附加的事件后記錄時(shí)間,以使得在運(yùn)動(dòng)檢測(cè)事件已經(jīng)停止檢測(cè)感興趣的區(qū)域中的運(yùn)動(dòng)之后,在該附加的時(shí)間內(nèi)繼續(xù)進(jìn)行記錄。除了記錄事件視頻序列之外或者作為其替換方案,攝像機(jī)可將事件視頻序列傳輸給使用地點(diǎn),比如安全控制中心,可在該使用地點(diǎn)觀看和/或記錄事件視頻序列。
[0034]在可記錄或傳輸事件視頻序列之前,使用基于分塊的混合視頻編解碼器對(duì)其進(jìn)行編碼,比如使用h.264編解碼器。如上文討論的,將圖像編碼為1-幀或P-幀,并且這些幀被分組為畫面組,也被稱為G0P。圖2例示了設(shè)置在兩個(gè)畫面組G0P1和G0P2中的編碼的圖像幀序列。第一畫面組G0P1起始于1-幀101,其后跟隨著多個(gè)P-幀。第一畫面組以P-幀102結(jié)束。下一幀被編碼為1-幀103,其形成第二畫面組G0P2的起始幀。在此1-幀103之后,接著的圖像幀被編碼為P-幀,并且第二畫面組以P-幀104結(jié)束。[0〇35]現(xiàn)在可參照?qǐng)D3,其例不了事件視頻序列是如何生成的。在此,圖像幀中的1-幀由I 表示,而P-幀由P表示。攝像機(jī)1繼續(xù)在緩沖器(在圖5中由附圖標(biāo)記11表示)中存儲(chǔ)捕捉的圖像幀。緩沖器是FIFO緩沖器,以使得當(dāng)緩沖器已滿時(shí)、緩沖器中最早的圖像幀被最新捕捉的圖像幀覆蓋。用戶已設(shè)定了例如3s的事件前記錄時(shí)間。為了使這3s可解和可查看,事件前視頻序列必須以1-幀開始。然而,很有可能的是,這3s中的第一圖像幀是P-幀,而解碼無(wú)法從 P-幀開始,因?yàn)樵诓痪哂芯幋aP-幀時(shí)所參照的1-幀的情況下、P-幀本身不包含所有必要數(shù)據(jù)。為了保證存在至少3s的事件前視頻,對(duì)事件前緩沖器增加對(duì)應(yīng)于一個(gè)畫面組的另外的時(shí)間。因此,事件前緩沖器的實(shí)際長(zhǎng)度將取決于用戶選擇的事件前時(shí)間,并且取決于當(dāng)前幀率和G0P長(zhǎng)度。例如,當(dāng)用戶設(shè)定事件前時(shí)間為3s、幀率為30fps并且G0P長(zhǎng)度為128時(shí),事件前緩沖器中存儲(chǔ)的總時(shí)間將為7.3s。
[0036]當(dāng)有人進(jìn)入受監(jiān)控的場(chǎng)景時(shí),運(yùn)動(dòng)檢測(cè)算法確定感興趣的區(qū)域中存在運(yùn)動(dòng),然后觸發(fā)事件。在通知此事件后,記錄當(dāng)前在事件前緩沖器中的圖像幀,并且開始記錄在事件開頭時(shí)捕捉的圖像幀。當(dāng)運(yùn)動(dòng)檢測(cè)算法不再檢測(cè)到感興趣的區(qū)域中的運(yùn)動(dòng)時(shí),繼續(xù)記錄直至由用戶設(shè)定的事件后記錄時(shí)間結(jié)束。事件后記錄時(shí)間可為例如5s。
[0037]為了控制碼率,期望使用動(dòng)態(tài)G0P長(zhǎng)度進(jìn)行記錄。以此方式,當(dāng)該場(chǎng)景中僅有少量運(yùn)動(dòng)或不存在運(yùn)動(dòng)時(shí),可使用較長(zhǎng)的G0P長(zhǎng)度,從而降低輸出碼率,這是因?yàn)镻-幀通常需要比1-幀所需更少的位進(jìn)行編碼。當(dāng)該場(chǎng)景中有大量運(yùn)動(dòng)時(shí),可使用較短的G0P長(zhǎng)度,這導(dǎo)致較高的輸出碼率但也能夠減少編碼偽影(encoding artifact)。如已提到過(guò)的,這使得難以或者甚至無(wú)法確定可確保解碼和查看期望的事件前時(shí)間的事件前緩沖器長(zhǎng)度。一旦再次使用由用戶設(shè)定的事件前記錄時(shí)間為3s并且?guī)蕿?0fps的實(shí)例、但同時(shí)增加G0P長(zhǎng)度至256, 則事件前緩沖器將必須保持總計(jì)11.3s的事件前視頻。如果在事件前緩沖器中僅存儲(chǔ)了先前計(jì)算的7.3s的視頻,則將有很大的風(fēng)險(xiǎn)使得在期望的3s的事件前記錄之前或者開始時(shí)不存在1-幀。應(yīng)指出的是,通過(guò)幀率和G0P長(zhǎng)度的組合,畫面組的長(zhǎng)度大于由用戶設(shè)定的事件前記錄時(shí)間3s。
[0038]根據(jù)本發(fā)明,這是通過(guò)對(duì)緩沖器使用另一GOP結(jié)構(gòu)解決的,在本示例中為另一GOP 長(zhǎng)度。如果對(duì)緩沖器使用了預(yù)定的GOP長(zhǎng)度,則緩沖器的必要長(zhǎng)度可預(yù)計(jì)地計(jì)算為如上所述。在圖3中,事件前序列由附圖標(biāo)記SEQ1表示。一旦觸發(fā)運(yùn)動(dòng)檢測(cè)事件,則取回并記錄緩沖器中的事件前視頻序列SEQ1,然后開始對(duì)捕捉到的圖像幀進(jìn)行記錄。事件后序列由附圖標(biāo)記SEQ2表示,并且包括在事件過(guò)程(S卩,從事件開始到事件結(jié)束)中捕捉到的圖像幀以及在設(shè)定的事件后記錄時(shí)間中捕捉到的圖像幀。與事件前序列相比,對(duì)于在事件開始時(shí)的視頻序列,使用動(dòng)態(tài)GOP長(zhǎng)度,如由圖3中每個(gè)1-幀之后不同數(shù)量的P-幀所表示的。在此,動(dòng)態(tài)GOP 長(zhǎng)度是基于圖像幀中的運(yùn)動(dòng)水平而控制的。此動(dòng)態(tài)GOP長(zhǎng)度控制可以以許多方式執(zhí)行,例如,以
【申請(qǐng)人】的歐洲專利申請(qǐng)N0.14193291.3中公開的方式執(zhí)行,并且將在此對(duì)其進(jìn)行進(jìn)一步詳細(xì)討論。
[0039]應(yīng)注意的是,盡管上述討論涉及事件視頻序列的記錄,但同樣的生成事件視頻序列的原理可用于其他目的,比如用于向例如控制中心的保安人員顯示事件視頻序列。其還可用于例如經(jīng)由電子郵件或文件傳輸協(xié)議(ftp)傳輸事件視頻序列。
[0040]可參照?qǐng)D4以更通用的術(shù)語(yǔ)描述生成事件視頻序列的方法,圖4是方法的變型的流程圖。接收輸入圖像幀(步驟S01)。輸入圖像幀被編碼為設(shè)置成畫面組的圖像幀序列。每個(gè)畫面組具有例如定義所使用的幀的類型(例如,1-幀和P-幀和/或B-幀)以及每個(gè)畫面組中幀的數(shù)量(即,G0P的長(zhǎng)度)的G0P結(jié)構(gòu)。將圖像幀的事件前序列存儲(chǔ)(步驟S02)在FIFO緩沖器中。事件前序列具有預(yù)定的第一G0P結(jié)構(gòu)。接收事件通知或觸發(fā)(S03)。當(dāng)已收到事件通知時(shí),從緩沖器中取回事件前序列(步驟S04)。通過(guò)將圖像幀的事件前序列與事件后序列組合來(lái)生成事件視頻序列。圖像幀的事件后序列是在事件時(shí)間處開始捕捉的并且具有不同于第一G0P結(jié)構(gòu)的第二G0P結(jié)構(gòu)。第一和第二G0P結(jié)構(gòu)可以通過(guò)若干方式而不同,例如,通過(guò)具有不同的G0P長(zhǎng)度。所生成的事件視頻序列可以以各種方式使用,比如用于記錄、顯示或傳輸。 該方法可借助于計(jì)算機(jī)程序執(zhí)行。
[0041]現(xiàn)在將參照?qǐng)D5描述可以根據(jù)上文中描述的方法進(jìn)行使用的系統(tǒng)。用于生成事件視頻序列的系統(tǒng)10包括圖像接收器11,該圖像接收器11被設(shè)置為接收編碼為設(shè)置成畫面組的圖像幀序列的輸入圖像幀。系統(tǒng)10還包括FIFO緩沖器12,用于存儲(chǔ)圖像幀的事件前序列, 事件前序列具有預(yù)定的第一 G0P結(jié)構(gòu)。此外,系統(tǒng)10具有事件通知接收器13,該事件通知接收器13被設(shè)置為接收事件通知。系統(tǒng)10還具有生成模塊14,該生成模塊14被設(shè)置為從緩沖器12取回事件前序列,并且在接收到事件通知之后將圖像幀的事件前序列與事件后序列組合。事件后序列具有不同于第一G0P結(jié)構(gòu)的第二G0P結(jié)構(gòu)。在此實(shí)施例中,系統(tǒng)10包括G0P長(zhǎng)度模塊,該G0P長(zhǎng)度模塊被設(shè)置為設(shè)定用于事件后序列的動(dòng)態(tài)G0P長(zhǎng)度。動(dòng)態(tài)G0P長(zhǎng)度可基于,例如,輸入圖像幀中的運(yùn)動(dòng)水平。而且,系統(tǒng)10可包括用戶輸入模塊16,該用戶輸入模塊 16被設(shè)置為接收用于為事件前序列設(shè)定預(yù)定G0P長(zhǎng)度的用戶輸入。用戶可以例如經(jīng)由系統(tǒng) 10的圖形用戶界面輸入期望的G0P長(zhǎng)度。
[0042]將意識(shí)到的是,本領(lǐng)域技術(shù)人員可以以許多方式修改上述實(shí)施例并且仍可利用上文中各實(shí)施例所顯示的本發(fā)明的優(yōu)勢(shì)。作為示例,應(yīng)注意到,在以上說(shuō)明中僅使用P-幀作為幀間編碼幀。然而,也可使用B-幀。[〇〇43] 如已提到過(guò)的,可因各種原因生成事件視頻序列,比如如上所討論地用于記錄,或者用于顯示或傳輸,例如經(jīng)由電子郵件或ftp。
[0044]用于生成事件視頻序列的系統(tǒng)10可集成在攝像機(jī)內(nèi),例如圖1所示的監(jiān)控?cái)z像機(jī) 1。系統(tǒng)10還可獨(dú)立地實(shí)施,但可操作地連接至攝像機(jī)。
[0045]上述實(shí)例中的動(dòng)態(tài)G0P長(zhǎng)度是基于運(yùn)動(dòng)水平的。然而,事件后序列的G0P長(zhǎng)度也可通過(guò)使用其它方案而變化。G0P長(zhǎng)度的動(dòng)態(tài)控制可基于一個(gè)或多個(gè)輸入圖像幀的噪聲水平、編碼所述輸入圖像幀時(shí)的幀率或者為編碼所述圖像幀而設(shè)定的碼率限制。
[0046]而且,可能需要在丟失網(wǎng)絡(luò)連接之后插入1-幀以確保新的解碼起始點(diǎn)。[〇〇47]此外或者替換性地,用戶可能已設(shè)定了對(duì)于可用的事件前緩沖器而言過(guò)長(zhǎng)的、待用于記錄的G0P長(zhǎng)度。適應(yīng)于緩沖器的較短的G0P長(zhǎng)度在此情況下可用于事件前序列,而由用戶設(shè)定的較長(zhǎng)的G0P長(zhǎng)度用于事件后序列。[〇〇48]第二G0P結(jié)構(gòu)可以通過(guò)“僅G0P長(zhǎng)度有區(qū)別”的替換方式或者附加的方式而不同于第一G0P結(jié)構(gòu)。僅舉例說(shuō)明,第一G0P結(jié)構(gòu)可由1-幀、P-幀和B-幀構(gòu)成,而第二G0P結(jié)構(gòu)可僅由 1-幀和P-幀構(gòu)成。
[0049]除了G0P結(jié)構(gòu)的改變之外,事件前序列與事件后序列之間可能還存在其它編碼區(qū)另IJ。例如,一個(gè)壓縮值可用于事件前序列,而另一個(gè)壓縮值可用于事件后序列??商鎿Q地,靜態(tài)壓縮值可用于事件前序列,而動(dòng)態(tài)控制的壓縮值可用于事件后序列。
[0050]在上文描述的實(shí)例中,事件是運(yùn)動(dòng)檢測(cè)事件。應(yīng)意識(shí)到,該方法也可同樣地用于根據(jù)其它視頻分析算法的事件,比如對(duì)象追蹤算法、橫條線檢測(cè)算法、錯(cuò)路檢測(cè)算法、面部檢測(cè)算法或者牌照識(shí)別算法。事件還可為例如源自外部傳感器的其它報(bào)警事件類型,比如麥克風(fēng)、門觸點(diǎn)或PIR傳感器。此類裝置可集成在攝像機(jī)內(nèi)、經(jīng)由I/O端口連接至攝像機(jī)或者可以是分立的。分立裝置可例如經(jīng)由以太網(wǎng)連接將事件通知提交給系統(tǒng)或攝像機(jī)。
[0051]事件不必為報(bào)警事件,而是可為系統(tǒng)事件或用戶輸入事件。系統(tǒng)事件可由攝像機(jī)系統(tǒng)生成,并且可為錯(cuò)誤通知,比如網(wǎng)絡(luò)丟失通知。用戶事件可為命令輸入,比如手動(dòng)開始記錄。
[0052]在圖5所示的實(shí)施例中,系統(tǒng)僅具有一個(gè)緩沖器。然而,系統(tǒng)可設(shè)置有更多個(gè)緩沖器,并且該方法可使用更多緩沖器。例如,系統(tǒng)和方法可操作多于一種的事件,并且可具有用于每一此類事件的一個(gè)緩沖器,例如,一個(gè)緩沖器用于運(yùn)動(dòng)檢測(cè),一個(gè)緩沖器用于面部檢測(cè),一個(gè)緩沖器用于系統(tǒng)事件,并且一個(gè)緩沖器用于用戶事件。以此方式,每個(gè)可用類型的事件可啟動(dòng)其自己的事件視頻序列的生成。例如,可通過(guò)受監(jiān)控的場(chǎng)景中的運(yùn)動(dòng)檢測(cè)來(lái)啟動(dòng)第一事件視頻序列的生成,以使得可在有人進(jìn)入該場(chǎng)景時(shí)將第一視頻序列顯示給控制中心的操作員。如果之后該人通過(guò)切斷網(wǎng)絡(luò)連接來(lái)干預(yù)攝像機(jī),則系統(tǒng)事件可啟動(dòng)第二事件視頻序列的生成,第二事件視頻序列可本地存儲(chǔ)在攝像機(jī)中,例如,存儲(chǔ)在機(jī)載SD卡中。 [〇〇53]作為輸入圖像幀源的攝像機(jī)可為任意類型的攝像機(jī),比如采用可見光的攝像機(jī)、 IR攝像機(jī)或者熱感攝像機(jī)。攝像機(jī)可為監(jiān)控?cái)z像機(jī)。[〇〇54]輸入圖像幀通??捎煽梢姽鈧鞲衅?、熱傳感器、飛行時(shí)間傳感器或者其它類型的、 能夠生成待使用幀內(nèi)和幀間編碼技術(shù)編碼的信息的、圖像生成傳感器生成。
[0055]用于對(duì)圖像幀編碼的編碼器可為任意類型的基于分塊的混合視頻編解碼器。編碼器可集成到事件視頻序列生成系統(tǒng)內(nèi)或者可為可操作地連接至事件視頻序列生成系統(tǒng)的分立裝置或模塊。[〇〇56]系統(tǒng)可實(shí)施為軟件、固件或硬件或者其組合。
[0057]由此,本發(fā)明不應(yīng)限于所示出的實(shí)施例,而是應(yīng)該由隨附權(quán)利要求書限定。
【主權(quán)項(xiàng)】
1.一種生成事件視頻序列的方法,所述方法包括:接收輸入圖像幀,所述輸入圖像幀被編碼為設(shè)置成畫面組的圖像幀序列,每個(gè)畫面組 包括幀內(nèi)編碼幀和零或更多個(gè)隨后的幀間編碼幀,所述圖像幀序列中的每個(gè)畫面組具有 GOP結(jié)構(gòu);在先進(jìn)先出緩沖器(12)中存儲(chǔ)圖像幀的事件前序列(SEQ1),所述事件前序列(SEQ1)具 有預(yù)定的第一 GOP結(jié)構(gòu);接收事件通知;在接收到所述事件通知后,從所述緩沖器(12)取回所述事件前序列(SEQ1);以及通過(guò)將圖像幀的所述事件前序列(SEQ1)與事件后序列(SEQ2)組合來(lái)生成事件視頻序 列,所述事件后序列(SEQ2)具有不同于所述第一GOP結(jié)構(gòu)的第二GOP結(jié)構(gòu),其中,所述第一GOP結(jié)構(gòu)與所述第二GOP結(jié)構(gòu)的區(qū)別在于:所述第一GOP結(jié)構(gòu)的第一GOP 長(zhǎng)度不同于所述第二GOP結(jié)構(gòu)的第二GOP長(zhǎng)度,每個(gè)GOP長(zhǎng)度是由包含在相應(yīng)的畫面組中的 幀的數(shù)目定義的,并且其中,所述第一GOP長(zhǎng)度是預(yù)定的,而所述第二GOP長(zhǎng)度是動(dòng)態(tài)的。2.根據(jù)權(quán)利要求1所述的方法,其中,所述第二GOP長(zhǎng)度長(zhǎng)于所述第一GOP長(zhǎng)度。3.根據(jù)權(quán)利要求1所述的方法,其中,所述動(dòng)態(tài)GOP長(zhǎng)度是基于所確定的一個(gè)或多個(gè)輸 入圖像幀的運(yùn)動(dòng)水平、一個(gè)或多個(gè)輸入圖像幀的噪聲水平、編碼所述輸入圖像幀時(shí)的幀率 或者為編碼所述圖像幀而設(shè)定的碼率限制中的至少一個(gè)設(shè)定的。4.根據(jù)權(quán)利要求1所述的方法,其中,所述預(yù)定GOP結(jié)構(gòu)是由用戶輸入設(shè)定的。5.—種生成事件視頻序列的系統(tǒng),所述系統(tǒng)包括:圖像接收器(11),被設(shè)置為接收輸入圖像幀,所述輸入圖像幀被編碼為設(shè)置成畫面組 的圖像幀序列,每個(gè)畫面組包括幀內(nèi)編碼幀和零或更多個(gè)隨后的幀間編碼幀,所述圖像幀 序列中的每個(gè)畫面組具有GOP結(jié)構(gòu);緩沖器(12),被設(shè)置為基于先進(jìn)先出存儲(chǔ)圖像幀的事件前序列(SEQ1),所述事件前序 列(SEQ1)具有預(yù)定的第一 GOP結(jié)構(gòu);事件通知接收器(13 ),被設(shè)置為接收事件通知;生成模塊(14),被設(shè)置為從所述緩沖器(12)取回所述事件前序列(SEQ1)并且在接收到 事件通知后、將圖像幀的所述事件前序列(SEQ1)與事件后序列(SEQ2)組合,所述事件后序 列(SEQ2)具有不同于所述第一 GOP結(jié)構(gòu)的第二GOP結(jié)構(gòu),其中,所述第一GOP結(jié)構(gòu)與所述第二GOP結(jié)構(gòu)的區(qū)別在于:所述第一GOP結(jié)構(gòu)的第一GOP 長(zhǎng)度不同于所述第二GOP結(jié)構(gòu)的第二GOP長(zhǎng)度,每個(gè)GOP長(zhǎng)度是由包含在相應(yīng)的畫面組中的 幀的數(shù)目定義的,并且其中,所述第一GOP長(zhǎng)度是預(yù)定的,而所述第二GOP長(zhǎng)度是動(dòng)態(tài)的。6.根據(jù)權(quán)利要求5所述的系統(tǒng),其中,所述第二GOP長(zhǎng)度長(zhǎng)于所述第一GOP長(zhǎng)度。7.根據(jù)權(quán)利要求5所述的系統(tǒng),還包括GOP長(zhǎng)度模塊(15),所述GOP長(zhǎng)度模塊(15)被設(shè)置 為基于所確定的一個(gè)或多個(gè)輸入圖像幀的運(yùn)動(dòng)水平、一個(gè)或多個(gè)輸入圖像幀的噪聲水平、 編碼所述輸入圖像幀時(shí)的幀率或者為編碼所述圖像幀而設(shè)定的碼率限制中的至少一個(gè)來(lái) 設(shè)定所述動(dòng)態(tài)GOP長(zhǎng)度。8.根據(jù)權(quán)利要求5或6所述的系統(tǒng),還包括用戶輸入模塊(16),所述用戶輸入模塊(16)被設(shè)置為接收用于設(shè)定所述預(yù)定GOP長(zhǎng)度的用戶輸入。9.一種攝像機(jī),包括根據(jù)權(quán)利要求1所述的系統(tǒng)(10)。
【文檔編號(hào)】H04N7/18GK105991976SQ201610115623
【公開日】2016年10月5日
【申請(qǐng)日】2016年3月1日
【發(fā)明人】維克托·埃德帕爾姆, 比耶內(nèi)·羅森格倫, 約納斯·霍姆伯格, 斯蒂芬·倫德貝里
【申請(qǐng)人】安訊士有限公司