何烈云,周 妍
(浙江警察學(xué)院交通管理工程系,浙江杭州 310053)
車(chē)速是交通事故鑒定中非常重要的內(nèi)容之一,常用的車(chē)速鑒定技術(shù)有視頻圖像、動(dòng)力學(xué)理論模型、行車(chē)記錄設(shè)備、交通事故重建4種技術(shù)[1-2]。視頻圖像車(chē)速鑒定技術(shù)具有原理簡(jiǎn)單、操作方便、直觀形象、說(shuō)服力強(qiáng)等優(yōu)點(diǎn)。隨著視頻技術(shù)的快速發(fā)展和公安“天網(wǎng)工程”深入推進(jìn),路面監(jiān)控視頻覆蓋率得到大幅度提升,視頻圖像成為了分析交通事故成因的重要證據(jù),當(dāng)前鑒定80%以上事故車(chē)輛速度鑒定采用視頻技術(shù)。視頻圖像鑒定技術(shù)基本原理是利用運(yùn)動(dòng)學(xué)原理
(1)
綜上,現(xiàn)有的研究成果中關(guān)于S參數(shù)測(cè)定方法已經(jīng)相對(duì)比較成熟,但關(guān)于T參數(shù)研究還不夠深入,如何測(cè)定時(shí)域失真視頻目標(biāo)車(chē)輛行駛還沒(méi)有一種有效的方法,一旦遇到時(shí)間水印不穩(wěn)定、丟幀、重幀等引起時(shí)域失真的視頻,目標(biāo)車(chē)輛行駛時(shí)間難以確定,導(dǎo)致車(chē)速無(wú)法鑒定或鑒定結(jié)果誤差較大。本文從視頻采集播放、編碼解碼、傳輸存儲(chǔ)、轉(zhuǎn)碼封裝等技術(shù)原理層面開(kāi)展研究,運(yùn)用Elecard視頻碼流分析軟件,以視頻時(shí)間基為重要參數(shù),針對(duì)不同類(lèi)型時(shí)域失真視頻提出了確定目標(biāo)車(chē)輛的行駛時(shí)間方法。
數(shù)字視頻可視為由一系列靜止圖像通過(guò)某一時(shí)間軸串聯(lián)而成的圖像集合,每一幅圖像稱(chēng)為一幀。在視頻的編解碼技術(shù)及視頻中,有時(shí)間戳、時(shí)間基及水印時(shí)間3個(gè)主要參數(shù),它們之間存在一定的關(guān)系,在視頻測(cè)速技術(shù)中,對(duì)確定目標(biāo)車(chē)輛行駛時(shí)間有重要作用。
時(shí)間戳是指視頻幀所處時(shí)間軸上對(duì)應(yīng)時(shí)間刻度,若某視頻時(shí)長(zhǎng)為10 s、幀率恒為25 fps,則該視頻第1 250幀對(duì)應(yīng)的時(shí)間戳為5 s。FFmpeg視頻編解碼技術(shù)中時(shí)間戳(Time Stamp)可以分為解碼時(shí)間戳DTS(Decoding Time Stamp)和顯示時(shí)間戳PTS(Presentation Time Stamp)兩種,DTS表示壓縮幀解碼時(shí)間,而PTS表示解碼后得到的原始幀的顯示時(shí)間,當(dāng)視頻中只有關(guān)鍵幀I幀(Intra-coded picture,簡(jiǎn)稱(chēng)I幀)和預(yù)測(cè)編碼圖像幀 (Predictive-coded picture,簡(jiǎn)稱(chēng)P幀)、而沒(méi)有雙向預(yù)測(cè)編碼圖像幀(Bi-directionally predicted picture,簡(jiǎn)稱(chēng)B幀),DTS和PTS是相等的。由于監(jiān)控視頻一般需要實(shí)現(xiàn)網(wǎng)絡(luò)傳輸并實(shí)時(shí)播放,而含B幀的視頻只適合本地存儲(chǔ)和點(diǎn)播,近年來(lái)監(jiān)控設(shè)備采集的原始視頻已不再采用B幀編碼技術(shù),但原始視頻通過(guò)未轉(zhuǎn)碼或格式封裝后,視頻中仍有可能存在B幀[10]。無(wú)特殊說(shuō)明,本文所指的時(shí)間戳中默認(rèn)為DTS和PTS是相等的。
FFmpeg視頻編解碼技術(shù)中時(shí)間基(Time base)是描述視頻幀時(shí)間長(zhǎng)度的參數(shù),可以理解為視頻時(shí)間軸上的刻度。若視頻的幀率恒為25 fps的視頻,時(shí)間基則為0.04 ms,即相鄰兩幀時(shí)間戳的差值。時(shí)間基對(duì)應(yīng)也有編碼時(shí)間基和解碼時(shí)間基兩種,對(duì)于播放流暢的視頻,兩種時(shí)間基是相等的,在視頻測(cè)速技術(shù)中更加關(guān)注的是解碼時(shí)間基。
視頻時(shí)間戳、時(shí)間基可以通過(guò)視頻編解碼軟件,也可以利用專(zhuān)業(yè)的視頻碼流分析工具。圖1是某段視頻運(yùn)用Elecard視頻碼流分析軟件得到的視頻碼流信息柱形圖(下稱(chēng)碼流圖),通過(guò)柱形圖獲取任意一幀的時(shí)間戳和時(shí)間基信息,還可以得到幀的類(lèi)型(紅色為I幀、藍(lán)色為P幀)、圖片象素、視頻長(zhǎng)度等信息。
圖1 Elecard碼流圖
任選視頻中m、n兩幀,對(duì)應(yīng)的時(shí)間戳分別為tsm、tsn,則兩幀時(shí)間戳關(guān)系表達(dá)式為:
(2)
式中tbi含義為從m~n之間任意一幀的時(shí)間基,若視頻幀率穩(wěn)定,時(shí)間軸上的刻度值是均勻分布的,即任意兩幀的時(shí)間戳差值時(shí)間基相等,則表達(dá)式為
tsn-tsm=(n-m)tb
(3)
由上面表達(dá)式可知,時(shí)間戳是一個(gè)相對(duì)時(shí)間參數(shù),大小只取決于視頻本身因素,且和時(shí)間基一樣,屬于視頻內(nèi)部信息參數(shù)。
水印時(shí)間是指視頻上所顯示的時(shí)間,可以把時(shí)間戳和時(shí)間基參數(shù)在視頻中直觀顯示出來(lái)。水印時(shí)間形成是運(yùn)用了OSD技術(shù)[11],數(shù)值來(lái)自于系統(tǒng)設(shè)置的時(shí)間,一般1 s刷新一次。水印時(shí)間形成設(shè)置有兩種方式,一種是直接攝像機(jī)前端設(shè)置,另一種是在后端存儲(chǔ)錄像機(jī)上進(jìn)行設(shè)置。攝像機(jī)上的疊加字符,可以設(shè)置打開(kāi)或者關(guān)閉。為了取證及視頻分析方便,監(jiān)控視頻均有水印時(shí)間。水印時(shí)間是一種固定信息,因此,相對(duì)于時(shí)間戳而言,是一種絕對(duì)時(shí)間信息,屬于視頻外部信息參數(shù)。
時(shí)間戳和水印時(shí)間是視頻時(shí)間軸上的兩種不同表示幀時(shí)間參數(shù)的方式,因此即有聯(lián)系也有區(qū)別。若某視頻以水印時(shí)間為參考標(biāo)準(zhǔn)時(shí),幀率保持穩(wěn)定,則時(shí)間戳、時(shí)間基、水印時(shí)間關(guān)系式為
tsn-tsm≡(n-m)tb≡twn-twm
(4)
式中twm、twn為m、n兩幀對(duì)應(yīng)水印時(shí)間值。
時(shí)間戳、時(shí)間基屬于編解碼技術(shù)時(shí)間參數(shù),一般由攝錄設(shè)備內(nèi)部芯片和由編碼器共同決定,對(duì)于同一型號(hào)的攝錄設(shè)備時(shí)間戳、時(shí)間基是常數(shù)。視頻OSD的刷新是獨(dú)立線程控制,受線程調(diào)度的影響,不可能做到跟視頻編碼完整匹配[11]。因此兩幀之間的時(shí)間間隔,采用水印時(shí)間和碼流時(shí)間戳結(jié)果可能有所不同。
為分析方便,將用于車(chē)速鑒定的檢材視頻分為A~F 6類(lèi):A類(lèi)視頻播放流暢,且以水印時(shí)間測(cè)定視頻幀率恒定;B類(lèi)視頻播放流暢,但以水印時(shí)間測(cè)定時(shí)幀率不穩(wěn)定;C類(lèi)視頻視圖像逐幀播放時(shí)存在有規(guī)律“丟幀”現(xiàn)象;D類(lèi)視頻逐幀播放時(shí)存在有規(guī)律“重幀”現(xiàn)象;E類(lèi)視頻雖然沒(méi)有“丟幀”或“重幀”現(xiàn)象發(fā)生,但是播放不流暢,視頻播放時(shí)會(huì)出現(xiàn)抖動(dòng)現(xiàn)象;F類(lèi)視頻視圖像逐幀播放時(shí)存在無(wú)規(guī)律的“丟幀”和“重幀”現(xiàn)象。A類(lèi)視頻時(shí)域不失真;B類(lèi)視頻若水印時(shí)間為參考,可以視為時(shí)域失真;C、D、E、F類(lèi)視頻播放過(guò)程中畫(huà)面不流暢,明顯存在時(shí)域失真現(xiàn)象。
以監(jiān)控視頻為例,視頻從采集到播放全過(guò)程可以分為兩條路徑6個(gè)階段,如圖2所示。
圖2 視頻形成階段示意圖
實(shí)驗(yàn)研究表明,視頻形成過(guò)程中,除了在拷貝復(fù)制階段外,其余任何一個(gè)階段均有可能導(dǎo)致視頻時(shí)域失真現(xiàn)象。在視頻形成6個(gè)階段中,導(dǎo)致視頻出現(xiàn)B~F類(lèi)時(shí)域失真視頻最常見(jiàn)形成階段如表1所示。
信息采集和編碼封裝兩個(gè)階段與視頻攝錄設(shè)備性能、參數(shù)設(shè)置、壓縮標(biāo)準(zhǔn)、封裝格式等均相關(guān)。隨著技術(shù)發(fā)展,監(jiān)控性能穩(wěn)定性越來(lái)越高。當(dāng)前主流監(jiān)控視頻壓縮標(biāo)準(zhǔn)以H.264、MJPEG為主;視頻以固定幀率為主,主要有24 fps、25 fps、30 fps 3種;封裝格式是MP4、AVI、WMV、MPG為主,MP4即可應(yīng)用于網(wǎng)絡(luò)傳輸及本地存儲(chǔ),AVI由于視頻文件較大主要用于本地存儲(chǔ)為主。通過(guò)用戶(hù)平臺(tái)下載視頻時(shí),要確保下載參數(shù)設(shè)置的視頻屬性參數(shù)與原始屬性參數(shù)保持一致。C類(lèi)和D類(lèi)視頻主要是在視頻轉(zhuǎn)碼封裝過(guò)程中,改變?cè)幸曨l的幀率會(huì)導(dǎo)致“丟幀”或“重幀”,因此,非必要不宜對(duì)視頻進(jìn)行轉(zhuǎn)碼、封裝格式轉(zhuǎn)化、視頻編輯處理,更不允許以屏幕錄制方式錄制視頻。在視頻車(chē)速測(cè)定時(shí),盡量使用檢材視頻專(zhuān)用的播放器。若確因播放器不匹配需要轉(zhuǎn)碼操作,要確保轉(zhuǎn)碼標(biāo)準(zhǔn)、幀率與原視頻保持一致。有些車(chē)載視頻攝錄設(shè)備為了減小視頻文件占用存儲(chǔ)空間,在攝錄相對(duì)靜止的畫(huà)面時(shí),會(huì)采用“可變幀率”或者“可變碼流”技術(shù)。由于視頻幀率不固定,就會(huì)形成E類(lèi)視頻。網(wǎng)絡(luò)存儲(chǔ)階段如果SD卡讀寫(xiě)、網(wǎng)絡(luò)傳輸發(fā)生擁塞等原因?qū)е聛G包現(xiàn)象,會(huì)造成視頻流缺失,視頻畫(huà)面表現(xiàn)無(wú)規(guī)律的“重幀”或“跳幀”現(xiàn)象[12-13],往往會(huì)形成F類(lèi)視頻。因此,在交通事故車(chē)速鑒定中,用于檢材視頻宜直接從攝錄設(shè)備SD卡上拷貝。
表1 時(shí)域失真視頻常見(jiàn)形成階段
視頻時(shí)域失真特性可以采用時(shí)間基tb、時(shí)間戳ts、水印時(shí)間tw、幀率f等參數(shù)進(jìn)行描述。用字母fw表示按水印時(shí)間測(cè)定視頻幀速度;fb表示按時(shí)間基測(cè)定幀率,fb=1/tb;fc表示直接計(jì)算所得視頻幀率;Tp表示視頻播放總時(shí)長(zhǎng);Nt表示視頻總幀數(shù);fc=Nt/Tp,視頻播放軟件提供視頻幀率是通過(guò)這種方法計(jì)算得出。若時(shí)間軸上存在m、n兩幀圖像,運(yùn)用Elecard視頻碼流軟件分析工具對(duì)A~F 6類(lèi)視頻進(jìn)行實(shí)驗(yàn)分析,6類(lèi)視頻相關(guān)參數(shù)關(guān)系特征如表2所示。
表2 A~F 6類(lèi)視頻參數(shù)關(guān)系特征
《基于視頻圖像的車(chē)輛行駛速度技術(shù)鑒定》(GAT1133—2014)要求提供鑒定視頻畫(huà)面播放流暢且具有幀率穩(wěn)定,視頻的顯示時(shí)間應(yīng)校準(zhǔn),并以校準(zhǔn)后的時(shí)間作為計(jì)算用時(shí)間。該標(biāo)準(zhǔn)視頻幀率如何確定、校正時(shí)間的作用沒(méi)作出具體說(shuō)明。在實(shí)踐中往往以水印時(shí)間為標(biāo)準(zhǔn),通過(guò)逐幀播放視頻測(cè)定1 s內(nèi)視頻幀數(shù)計(jì)算得到幀率,在此基礎(chǔ)上,確定目標(biāo)車(chē)輛的行駛時(shí)間。標(biāo)準(zhǔn)中提供的方法只適合A類(lèi)視頻的時(shí)間參數(shù)確定,實(shí)驗(yàn)研究表明,對(duì)于時(shí)域失真視頻可以運(yùn)用Elecard分析視頻碼流特性,獲得視頻的時(shí)間基和時(shí)間戳參數(shù),最終確定目標(biāo)車(chē)輛行駛時(shí)間。
B類(lèi)視頻由于真實(shí)幀率ft與水印時(shí)間測(cè)定幀率為fw有差異,如果以水印時(shí)間測(cè)算視頻幀率,則車(chē)速算定結(jié)果的相對(duì)誤差δ為:
(5)
由式(5)可知,當(dāng)ft為25 fps、fw為28 fps時(shí),車(chē)速測(cè)定誤差達(dá)到12%,如果加上目標(biāo)車(chē)輛行駛距離參數(shù)測(cè)定誤差,最終車(chē)速測(cè)定可能出現(xiàn)的誤差值更大,對(duì)于精度要求較高的視頻測(cè)速技術(shù)顯然是難以接受的。
在確定B類(lèi)視頻目標(biāo)車(chē)輛行駛時(shí)間參數(shù),首先運(yùn)用視頻編碼分析軟件或視頻碼流軟件分析工具,得到視頻的時(shí)間基tb。在此基礎(chǔ)上確定視頻的幀率ft,若目標(biāo)車(chē)輛經(jīng)過(guò)圖像幀數(shù)為n幀時(shí),所用的時(shí)間T=n×tb。
在研究C類(lèi)和D類(lèi)流暢度視頻時(shí)間參數(shù)確定方法時(shí),運(yùn)用PC-crash交通事故仿真再現(xiàn)軟件獲取一段實(shí)驗(yàn)視頻,圖3為實(shí)驗(yàn)視頻截圖。
圖3 PC-crash實(shí)驗(yàn)視頻截圖
為了便于車(chē)速測(cè)定,實(shí)驗(yàn)視頻參數(shù)設(shè)置如下:道路分界線長(zhǎng)度和間隔均為5 m;車(chē)身長(zhǎng)度為5 m;車(chē)速20 m/s;視頻幀率為20 fps。實(shí)驗(yàn)視頻左上角自動(dòng)生成水印時(shí)間和車(chē)速水印,與視頻攝錄設(shè)備水印時(shí)間原理不同,PC-crash視頻水印時(shí)間相當(dāng)于視頻編碼時(shí)間戳,即每生成一幀圖像,水印時(shí)間變化一次,變化值為0.05 s。
PC-crash導(dǎo)出的是A類(lèi)實(shí)驗(yàn)視頻,采用對(duì)A類(lèi)實(shí)驗(yàn)視頻進(jìn)行改變幀率轉(zhuǎn)碼封裝的方法,得到了視頻幀率分別為10 fps、15 fps、18 fps 3段C類(lèi)視頻;22 fps、28 fps、40 fps 3段D類(lèi)視頻。選取水印時(shí)間顯示為2.250~3.350 s的片段視頻進(jìn)行研究,運(yùn)用Elecard分析視頻的時(shí)間基可發(fā)現(xiàn),只要原始視頻時(shí)間基是恒定的,幀率改變的視頻時(shí)間基也必定是恒定的,幀率為1/tb?!皝G幀”和“重幀”所處時(shí)間軸位置如表3所示。
表3 C類(lèi)和D類(lèi)時(shí)域失真規(guī)律分析表
由表3可知,原始視頻經(jīng)轉(zhuǎn)碼封裝后,“丟幀”和“重幀”位置間隔均呈現(xiàn)一定的規(guī)律性,通過(guò)實(shí)驗(yàn),驗(yàn)證了前文關(guān)于“丟幀”和“重幀”時(shí)域失真視頻形成原因的結(jié)論。表中原始水印時(shí)間即為目標(biāo)車(chē)輛實(shí)際的行駛時(shí)間,通過(guò)分析表格中不同幀率視頻,目標(biāo)車(chē)輛行駛時(shí)間Tt滿(mǎn)足:
(6)
式中Tt為目標(biāo)車(chē)輛實(shí)際的行駛時(shí)間;p、q為時(shí)域失真視頻中每間隔p幀內(nèi)發(fā)生了q次“丟幀”或“重幀”;tb為時(shí)域失真視頻的碼流時(shí)間基;n為目標(biāo)車(chē)輛通過(guò)參照物所用的幀數(shù);nd為時(shí)域失真視頻中,目標(biāo)車(chē)輛發(fā)生“丟幀”或“重幀”數(shù);±為C類(lèi)視頻計(jì)算時(shí)用“+”、D類(lèi)視頻計(jì)算時(shí)用“-”。
在實(shí)踐中需注意,式(6)適用于A類(lèi)視頻在格式封裝轉(zhuǎn)換時(shí),因幀率設(shè)置改變形成C類(lèi)或D類(lèi)視頻時(shí)確定目標(biāo)車(chē)輛行駛時(shí)間,對(duì)于F類(lèi)視頻使用時(shí)要謹(jǐn)慎。
E類(lèi)視頻雖然在播放時(shí)視覺(jué)感觀上是不流暢的,但是其畫(huà)面不存在“丟幀”或“重幀”現(xiàn)象。分析此類(lèi)視頻碼流顯著特點(diǎn)是時(shí)間基不是固定值,但碼流時(shí)間戳能與實(shí)際的攝錄時(shí)長(zhǎng)度相吻合。運(yùn)用Elecard軟件分析某車(chē)載E類(lèi)視頻時(shí)間基、時(shí)間戳等碼流參數(shù),結(jié)果如表4所示。
表4 E類(lèi)視頻碼流參數(shù)
由表4可知,目標(biāo)車(chē)輛經(jīng)過(guò)5幀圖像時(shí),所用的時(shí)間是5幀時(shí)間基相加,這個(gè)值也等于第5幀時(shí)間戳值0.233 s。因此E類(lèi)視頻,當(dāng)目標(biāo)車(chē)輛經(jīng)過(guò)圖像幀數(shù)為n幀時(shí),所用的時(shí)間T滿(mǎn)足:
(7)
式(7)中,tbi含義為第i幀的時(shí)間基值。
綜上,確定時(shí)域失真視頻目標(biāo)車(chē)輛行駛時(shí)間,可以采用以下方法:
(1)針對(duì)視頻播放流暢但水印時(shí)間不穩(wěn)定的視頻,運(yùn)用視頻碼流分析軟件獲得視頻碼流的時(shí)間基,在此基礎(chǔ)上判定視頻幀率和目標(biāo)車(chē)輛行駛時(shí)間。
(2)針對(duì)規(guī)律性的“丟幀”和“重幀”時(shí)域失真視頻,運(yùn)用視頻碼流分析軟件,掌握時(shí)域失真的規(guī)律和時(shí)間基參數(shù),在此基礎(chǔ)出計(jì)算目標(biāo)車(chē)輛的實(shí)際時(shí)間。
(3)針對(duì)無(wú)“丟幀”和“重幀”現(xiàn)象的時(shí)域失真視頻,運(yùn)用視頻碼流分析軟件計(jì)算目標(biāo)車(chē)輛通過(guò)參照物起始幀時(shí)間戳差值,由此確定目標(biāo)車(chē)輛的行駛時(shí)間。
另外,通過(guò)實(shí)驗(yàn)研究表明,F(xiàn)類(lèi)時(shí)域失真視頻情況比較復(fù)雜,目標(biāo)車(chē)輛行駛時(shí)間無(wú)法有效確定,不建議作為車(chē)速檢材視頻使用。
車(chē)速鑒定的檢材視頻,當(dāng)水印時(shí)間不穩(wěn)定或播放不流暢時(shí)會(huì)導(dǎo)致時(shí)域失真時(shí),采用現(xiàn)行視頻圖像車(chē)速鑒定標(biāo)準(zhǔn),難以準(zhǔn)確獲取目標(biāo)車(chē)輛的行駛時(shí)間。根據(jù)視頻播放時(shí)呈現(xiàn)出的不同特征,可將時(shí)域失真視頻分為5種不同類(lèi)型。確定時(shí)域失真視頻目標(biāo)車(chē)輛行駛時(shí)間,可以運(yùn)用分析視頻碼流特性的方法,得到時(shí)域失真視頻中時(shí)間戳、時(shí)間基及水印時(shí)間3個(gè)參數(shù)及相互關(guān)系,并判斷時(shí)域失真視頻具體類(lèi)型。在此基礎(chǔ)上,采用相對(duì)應(yīng)的算法模型,測(cè)算出時(shí)域失真視頻目標(biāo)車(chē)輛的行駛時(shí)間。研究表明,碼流分析方法可以解決大部分時(shí)域失真視頻中目標(biāo)車(chē)輛的行駛時(shí)間無(wú)法確定的問(wèn)題,但對(duì)于時(shí)域失真較為嚴(yán)重的視頻,目標(biāo)車(chē)輛行駛時(shí)間確定仍存在困難,因此在實(shí)踐中,需要對(duì)碼流分析方法的可行性加以判斷。