方諍言,陳賢富
(中國(guó)科學(xué)技術(shù)大學(xué) 微電子學(xué)院,安徽 合肥 230026)
圖像拼接技術(shù)是將數(shù)張有重疊部分的圖像(可能是不同時(shí)間、不同視角或者不同傳感器獲得的)拼成一幅大型無(wú)縫高分辨率圖像[1]。日本的內(nèi)藤誠(chéng)[2]采用多個(gè)PC 平臺(tái)的分布式架構(gòu)來(lái)實(shí)現(xiàn)4K 超高清實(shí)時(shí)視頻的編碼,同時(shí)基于MPI(信息傳遞接口)通信協(xié)議實(shí)現(xiàn)多機(jī)通信。布朗[3]采用不變的局部特征作為全局特征進(jìn)行匹配,該方法適用于攝像機(jī)偏移忽略不計(jì)的理想狀態(tài)。民航二所科研中心自主研發(fā)的全景增強(qiáng)監(jiān)視系統(tǒng),采用8 臺(tái)激光投影機(jī)與幕布,通過(guò)投影融合和視頻墻控制顯示全景視頻。其優(yōu)點(diǎn)是可以實(shí)現(xiàn)相對(duì)的無(wú)縫拼接,缺點(diǎn)是采用硬件的手段構(gòu)建全景視頻,硬件成本高。國(guó)防科技大學(xué)的李靜[4]等人運(yùn)用了一種貝葉斯特征細(xì)化模型來(lái)自適應(yīng)地去除不正確的局部匹配點(diǎn),提高匹配點(diǎn)的正確率,減少拼接后的圖像出現(xiàn)重影。但對(duì)于實(shí)時(shí)性要求高的場(chǎng)景,該方案無(wú)法實(shí)現(xiàn)實(shí)時(shí)顯示。電子科技大學(xué)的張浩[5]實(shí)現(xiàn)了基于異構(gòu)多核的DSP 處理器進(jìn)行高清1 920×1 080 分辨率圖像拼接。這種基于DSP 處理器系統(tǒng)架構(gòu)對(duì)于4K 以上分辨率的圖像處理實(shí)時(shí)性較差。
經(jīng)過(guò)文獻(xiàn)調(diào)研后,本文設(shè)計(jì)了一種全景多路超高清監(jiān)控視頻拼接系統(tǒng)。該系統(tǒng)運(yùn)用了分布式架構(gòu),使用了多線程處理技術(shù),并提出了一種基于SMB(Server Message Block)協(xié)議的跨服務(wù)器傳輸視頻流算法,采用了基于預(yù)計(jì)算拼接參數(shù)的拼接模塊,大大提高了拼接的實(shí)時(shí)性。最終實(shí)現(xiàn)了機(jī)場(chǎng)監(jiān)控8 路4K 視頻實(shí)時(shí)拼接。
OpenCV 是一個(gè)開源的跨平臺(tái)計(jì)算機(jī)視覺庫(kù)。OpenCV 計(jì)算機(jī)視覺庫(kù)作為常用的圖像處理庫(kù)之一,功能強(qiáng)大,支持目前先進(jìn)的圖像處理技術(shù)且體系十分完善,幾乎涵蓋了近十年內(nèi)的主流算法[6],可用于開發(fā)實(shí)時(shí)的圖像處理、計(jì)算機(jī)視覺以及模式識(shí)別程序。
VLC 多媒體播放器(VLC media player)是可移植的、開源的支持多數(shù)音視頻編碼及各種流媒體協(xié)議的多媒體播放器。
OpenCV 的優(yōu)點(diǎn)在于靈活性強(qiáng),可對(duì)視頻幀進(jìn)行處理。VLC 獲取視頻流速度快,支持多種格式。
該系統(tǒng)通過(guò)千兆交換機(jī)連接8 臺(tái)索尼(SNCVB770)4K 網(wǎng)絡(luò)攝像機(jī)與5 臺(tái)服務(wù)器。交換機(jī)為思科catalyst 3560 千兆交換機(jī)。網(wǎng)絡(luò)攝像機(jī)每秒最高輸出30 幀4K(3 840×2 160)視頻。
服務(wù)器硬件參數(shù)如表1 所示。
表1 計(jì)算機(jī)詳細(xì)參數(shù)(5 臺(tái))
傳統(tǒng)的圖像處理技術(shù)對(duì)于4K 分辨率圖片處理,時(shí)間過(guò)長(zhǎng)且無(wú)法保證實(shí)時(shí)性。表2 是使用傳統(tǒng)圖像處理技術(shù)對(duì)4K 圖片操作進(jìn)行測(cè)試,得出的花費(fèi)時(shí)間。
表2 對(duì)4K 圖片處理時(shí)間
表2 給出了4K 圖像獲取視頻幀、色差處理、視頻拼接、視頻顯示所花費(fèi)的時(shí)間。視頻拼接這一操作,僅僅針對(duì)兩張圖片進(jìn)行處理,花費(fèi)的時(shí)間大于100 ms,也就是每秒處理圖像小于10 幀。如果對(duì)視頻處理速度小于每秒10 幀,視頻顯示的流暢度則無(wú)法保證。故本文不僅選用了性能更強(qiáng)的設(shè)備,而且使用并行處理技術(shù),還設(shè)計(jì)了如圖1 所示的分布式系統(tǒng)架構(gòu)來(lái)加速視頻拼接算法的運(yùn)行速度。
該系統(tǒng)有5 臺(tái)服務(wù)器,包括4 臺(tái)下位機(jī)、1 臺(tái)上位機(jī)。每臺(tái)下位機(jī)負(fù)責(zé)對(duì)2 路4K 視頻流進(jìn)行處理:獲取視頻幀、縮放視頻幀、色差調(diào)整、傳輸?shù)缴衔粰C(jī),上位機(jī)獲取8 路視頻進(jìn)行拼接、存儲(chǔ)以及顯示。利用該分布式系統(tǒng)能夠提高系統(tǒng)的處理速度,輸出20 幀/s 的畫面。
本系統(tǒng)依據(jù)視頻拼接逐幀拼接的特點(diǎn),將整個(gè)視頻拼接流程分配到上下位機(jī)5 臺(tái)機(jī)器上,上位機(jī)、下位機(jī)邏輯流程圖如圖2 所示。
下位機(jī)使用VLC 拉取視頻流,獲得視頻幀后,由OpenCV 進(jìn)行視頻幀縮放。這里的縮放是為了能夠顯示在4K 顯示器上,并且可以減少拼接視頻花費(fèi)的時(shí)間。若不縮放直接使用4K 視頻拼接會(huì)花費(fèi)大量時(shí)間,無(wú)法滿足實(shí)時(shí)性的要求,且會(huì)對(duì)后續(xù)的顯示造成困難。故采用先對(duì)視頻幀進(jìn)行縮放,后進(jìn)行拼接的處理過(guò)程。
在4K 圖片拼接測(cè)試中,針對(duì)大場(chǎng)景的圖像進(jìn)行拼接,得到的全景圖會(huì)出現(xiàn)色差,人肉眼就能感受到拼接的痕跡,影響拼接效果。圖3 所示為截取的拼接全景圖的部分圖像。
圖1 系統(tǒng)架構(gòu)圖
圖2 邏輯流程圖
圖3 全景色差圖
故在傳輸之前,下位機(jī)對(duì)視頻幀進(jìn)行色差校正后再對(duì)視頻幀進(jìn)行縮放、色差校正等一系列處理,之后傳輸?shù)缴衔粰C(jī)。上位機(jī)進(jìn)行拼接,最后存儲(chǔ)并顯示。
2.2.1 視頻傳輸模塊
在傳輸中,全景視頻的超大分辨率帶來(lái)諸多困難,包括帶寬不足和實(shí)時(shí)性不佳等問(wèn)題。這些問(wèn)題為算法設(shè)計(jì)與軟件實(shí)現(xiàn)提出了挑戰(zhàn)[7]。
SMB(Server Message Block)協(xié)議是一種基于TCP/IP協(xié)議實(shí)現(xiàn)的網(wǎng)絡(luò)文件共享傳輸協(xié)議。利用該協(xié)議可將視頻文件寫入上位機(jī)中。本文提出了一種交替讀取寫入策略。以一路視頻流為例:
(1)初始化:上位機(jī)開辟緩沖區(qū)建立文件夾V1,下位機(jī)向上位機(jī)V1 文件夾寫入第一個(gè)文件1.avi 與第二個(gè)文件2.avi。同時(shí)置標(biāo)志文件1.txt,2.txt 為0。視頻幀數(shù)量控制為50 幀左右。
(2)上位機(jī)循環(huán)讀取:上位機(jī)讀取標(biāo)志文件1.txt。此時(shí)1.txt 標(biāo)志位為0,讀取1.avi。讀取完畢之后釋放1.avi,置標(biāo)志文件1.txt 為1。上位機(jī)讀取標(biāo)志文件2.txt。如此反復(fù)。
(3)下位機(jī)循環(huán)寫入:下位機(jī)讀取標(biāo)志文件,查看標(biāo)志位。若標(biāo)志位為1,則寫入視頻幀;反之等待。如此反復(fù)。
視頻傳輸流程如圖4 所示。
通過(guò)這種傳輸機(jī)制,實(shí)現(xiàn)了將下位機(jī)初步處理后的8 路視頻寫入上位機(jī)進(jìn)行視頻拼接。該機(jī)制初始化時(shí),設(shè)置初始文件大小為50 幀左右,是考慮到初始化時(shí)間過(guò)長(zhǎng)會(huì)導(dǎo)致拼接圖像與實(shí)際圖像存在時(shí)延。
2.2.2 視頻拼接模塊
圖4 視頻傳輸流程圖
視頻拼接模塊是該系統(tǒng)的核心,也是該系統(tǒng)的設(shè)計(jì)難點(diǎn)。考慮一種特殊情況:視頻拼接的速度小于視頻寫入的速度,該情況下會(huì)導(dǎo)致拼接圖像與實(shí)際圖像出現(xiàn)越來(lái)越大的時(shí)延。此種情況說(shuō)明該系統(tǒng)的瓶頸是視頻拼接的時(shí)間。
如何有效降低視頻拼接的耗時(shí)是該系統(tǒng)的一個(gè)重點(diǎn)。本文結(jié)合系統(tǒng)的使用場(chǎng)景和硬件環(huán)境,提出了一個(gè)基于預(yù)計(jì)算拼接參數(shù)的拼接模塊。
傳統(tǒng)圖像拼接根據(jù)相鄰圖片之間存在的重疊區(qū)域,找出圖片的特征點(diǎn)進(jìn)行匹配,之后利用匹配好的特征點(diǎn)計(jì)算出單應(yīng)矩陣即像素點(diǎn)坐標(biāo)的變換矩陣。而上述流程在拼接過(guò)程中花費(fèi)大量時(shí)間。針對(duì)監(jiān)控?cái)z像頭有位置相對(duì)固定的特點(diǎn),以機(jī)場(chǎng)這一場(chǎng)景為例:攝像機(jī)是布置在位于跑道一側(cè)的中間位置,在該位置修建了監(jiān)控高塔用以布置攝像機(jī)。攝像機(jī)在塔頂呈扇形布置,并在外側(cè)設(shè)置保護(hù)罩防止外界因素對(duì)攝像機(jī)造成干擾。攝像機(jī)位置是固定保持不變的,利用圖像配準(zhǔn)算法一次計(jì)算出單應(yīng)矩陣作為固定參數(shù),可直接用于后續(xù)的圖像拼接中,將大大減少耗時(shí)。設(shè)原圖中某一像素點(diǎn)的坐標(biāo)為(x,y),變換后的坐標(biāo)為(x′,y′)。單應(yīng)矩陣為:
則(x,y)與(x′,y′)的變換關(guān)系為:
則有:
若直接利用單應(yīng)矩陣進(jìn)行圖像映射和拼接,會(huì)花費(fèi)大量時(shí)間。因此本文采用通過(guò)單應(yīng)矩陣得出像素點(diǎn)的映射關(guān)系,并存儲(chǔ)在矩陣中,具體步驟如下:
(1)構(gòu)造一個(gè)指針矩陣,矩陣大小為合成圖后的像素大小;
(2)將對(duì)應(yīng)像素點(diǎn)的映射關(guān)系寫入指針矩陣中;
(3)合成圖像時(shí)遍歷指針矩陣,即可得到對(duì)應(yīng)關(guān)系。
變換前的原坐標(biāo)能夠用單應(yīng)矩陣與變換后的坐標(biāo)表示,推導(dǎo)如下:
由式(3)、(4)可得:
最后可得x、y:
采用該方法進(jìn)行拼接,對(duì)下位機(jī)傳輸?shù)? 路視頻,拼接一幀全景圖只需要14~15 ms。
根據(jù)系統(tǒng)功能實(shí)際需要,使用C# 語(yǔ)言構(gòu)建系統(tǒng)軟件。該軟件客戶端由四個(gè)部分組成,分別是視頻拼接、視頻回放、日志管理、系統(tǒng)設(shè)置。
圖5 展示了視頻拼接界面,該界面可以完成拼接后顯示全景視頻,而且保留傳統(tǒng)監(jiān)控平臺(tái)對(duì)多路視頻進(jìn)行播放顯示的功能。
圖6 展示了視頻回放界面,監(jiān)控視頻通常需要保存一個(gè)月以上,該模塊能夠通過(guò)時(shí)間檢索視頻,并且實(shí)現(xiàn)了倍速播放,方便快速查找具體某個(gè)時(shí)間點(diǎn)的視頻片段。
日志管理界面用于記錄所有操作記錄及錯(cuò)誤信息,配合系統(tǒng)設(shè)置中的用戶管理,對(duì)客戶端進(jìn)行系統(tǒng)權(quán)限控制。如普通用戶無(wú)法查看后臺(tái)視頻回放和系統(tǒng)設(shè)置中的權(quán)限管理功能;超級(jí)管理員用戶擁有最高管理權(quán)限,能夠使用系統(tǒng)所有功能,并能分配系統(tǒng)賬號(hào)及權(quán)限。
圖5 視頻監(jiān)控界面
圖6 視頻回放界面
由于機(jī)場(chǎng)場(chǎng)景特殊,無(wú)法進(jìn)入機(jī)場(chǎng)內(nèi)搭建測(cè)試環(huán)境進(jìn)行測(cè)試,故自行搭建了測(cè)試環(huán)境。在樓頂架設(shè)攝像機(jī)平臺(tái),安裝攝像機(jī)并保證視頻間具有一定的重疊區(qū)域。攝像機(jī)平臺(tái)如圖7 所示。
圖7 攝像機(jī)平臺(tái)
該系統(tǒng)要實(shí)現(xiàn)對(duì)8 路4K 視頻進(jìn)行拼接并輸出4K 拼接后全景視頻。下位機(jī)完成了旋轉(zhuǎn)圖像、色差調(diào)整、圖像縮放、圖像寫入。上位機(jī)完成了8 路視頻圖像拼接、視頻顯示、視頻存儲(chǔ)。表3 是系統(tǒng)實(shí)時(shí)性測(cè)試結(jié)果。測(cè)試了上下位機(jī)處理1 000 幀圖像的平均時(shí)間。測(cè)試結(jié)果表明該系統(tǒng)實(shí)時(shí)性較高,處理速度達(dá)到預(yù)期,速度達(dá)到25 幀/s。
表3 實(shí)時(shí)性測(cè)試結(jié)果(ms)
調(diào)試系統(tǒng)后連續(xù)不間斷運(yùn)行24 h,未發(fā)現(xiàn)視頻有明顯延遲,運(yùn)行速度及拼接效果無(wú)明顯下降,說(shuō)明系統(tǒng)穩(wěn)定性良好。
圖8 是未拼接前的部分視頻圖像,由于后期調(diào)整了攝像機(jī)位置,因此視角有所縮??;圖9 展示了系統(tǒng)實(shí)時(shí)運(yùn)行拼接效果圖,該圖無(wú)明顯拼接痕跡與畸變,圖像質(zhì)量良好,達(dá)到了設(shè)計(jì)的預(yù)期效果。
圖8 未拼接視頻圖像
圖9 全景視頻圖像展示
視頻監(jiān)控是安全防范的重要組成部分,監(jiān)控的第一要?jiǎng)?wù)是用最短時(shí)間從被監(jiān)控的地方獲取盡可能多的信息反饋[8]。傳統(tǒng)監(jiān)控?cái)z像頭的布置較為分散,監(jiān)控人員需要目不轉(zhuǎn)睛地專注于多個(gè)攝像頭的內(nèi)容來(lái)保證對(duì)某個(gè)區(qū)域的監(jiān)控。超出一定數(shù)量的攝像頭,監(jiān)控人員難以保持長(zhǎng)時(shí)間的注意力。本設(shè)計(jì)針對(duì)這一問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于分布式系統(tǒng)的全景視頻拼接軟件,在一定程度上減少了監(jiān)控人員的工作壓力,也給決策人員提供了更加全面、有效的支持。
經(jīng)多次調(diào)試驗(yàn)證后,該全景拼接軟件系統(tǒng)穩(wěn)定性和實(shí)時(shí)性滿足設(shè)計(jì)要求,并順利通過(guò)驗(yàn)收。但是對(duì)于視頻拼接的質(zhì)量,如對(duì)圖像色差進(jìn)一步調(diào)整以實(shí)現(xiàn)更大對(duì)比度下的流暢過(guò)渡、整個(gè)系統(tǒng)的可靠性、處理速度的提升以實(shí)現(xiàn)30 幀以上的視頻處理等問(wèn)題,還有待進(jìn)一步研究。