基于FPGA+DM36X的IP攝像機(jī)平臺(tái)
近年來,隨著信息化技術(shù)以及物聯(lián)網(wǎng)的發(fā)展,對(duì)于視頻監(jiān)控設(shè)備的要求不斷的在提高,將高動(dòng)態(tài)范圍(High Dynamic Range,HDR)攝像機(jī)代替?zhèn)鹘y(tǒng)攝像機(jī)以提高監(jiān)控質(zhì)量成為了監(jiān)控設(shè)備的發(fā)展趨勢(shì)。TI公司達(dá)芬奇視頻處理技術(shù)在網(wǎng)絡(luò)攝像機(jī)視頻監(jiān)控方面的成功運(yùn)用,使得DM36X芯片與其他芯片相比具有低功耗、小尺寸、低成本、高性能等特點(diǎn)。但由于高動(dòng)態(tài)攝像機(jī)的數(shù)據(jù)量非常大,同時(shí)對(duì)圖像處理的要求也很高,這就增加了系統(tǒng)的復(fù)雜性。要同時(shí)滿足高質(zhì)量的視頻圖像處理效果和實(shí)時(shí)傳輸,單憑DM36X的處理能力已遠(yuǎn)不夠,且DM36X內(nèi)部的視頻處理算法已固定,眾多優(yōu)秀的圖像處理算法無法及時(shí)的添加進(jìn)去,這也對(duì)DM36X圖像處理能力的升級(jí)造成了一定的困難。而FPGA芯片處理速度快、靈活性高,可根據(jù)各種優(yōu)秀算法進(jìn)行較好的設(shè)計(jì),所以系統(tǒng)選用FPGA進(jìn)行前端HDR視頻圖像增強(qiáng)預(yù)處理部分,由此可在較大程度上減少DM36X的工作量,彌補(bǔ)其在高動(dòng)態(tài)視頻處理上的不足,使DM36X能完全發(fā)揮高速編碼和傳輸效的特點(diǎn),滿足系統(tǒng)實(shí)時(shí)性要求。將FPGA和DM36X共同運(yùn)用在網(wǎng)絡(luò)攝像機(jī)平臺(tái)中可充分發(fā)揮各自的優(yōu)勢(shì)。這種設(shè)計(jì)不僅使得系統(tǒng)在日后擴(kuò)充和再次開發(fā)上提供了足夠的靈活性,且有利于整個(gè)系統(tǒng)的升級(jí)與維護(hù)。
本系統(tǒng)是在TI公司基于達(dá)芬奇技術(shù)TMD320DM36X處理器的IP Camera方案基礎(chǔ)之上搭建基于FPGA+DM36X的IP攝像機(jī)平臺(tái),采用高動(dòng)態(tài)網(wǎng)絡(luò)攝像機(jī)MT9M034進(jìn)行圖像采集,以FPGA +DM36X作為HDR視頻圖像增強(qiáng)、編碼和傳輸處理核心,最終完成用戶通過遠(yuǎn)程PC機(jī)客戶端上觀看1 280×720分辨率,每秒30幀的實(shí)時(shí)視頻。
1 總體方案
系統(tǒng)架構(gòu)如圖1所示,MT9M034采集HDR視頻信號(hào),F(xiàn)PGA負(fù)責(zé)對(duì)HDR視頻圖像進(jìn)行增強(qiáng)處理,DM36X負(fù)責(zé)對(duì)增強(qiáng)后的HDR圖像進(jìn)行編碼傳輸?shù)忍幚怼?/p>
系統(tǒng)3部分之間的數(shù)據(jù)流如圖2所示。
圖像傳感器MT9M034經(jīng)過配置后輸出動(dòng)態(tài)范圍為120 dB的HDR圖像。圖像數(shù)據(jù)的位寬是20 bit,可選擇性的壓縮成12 bit或14 bit。由于DM36X處理能力的限制,在本系統(tǒng)中將傳感器輸出數(shù)據(jù)位寬設(shè)置為12 bit,這就會(huì)造成圖像數(shù)據(jù)的損失。所以本方案在原IP Camera的基礎(chǔ)之上添加了FPGA系統(tǒng),可根據(jù)需要靈活增加底層的圖像處理算法。首先圖像傳感器輸出的視頻數(shù)據(jù)在FPGA上進(jìn)行捕獲和對(duì)數(shù)壓縮等處理,達(dá)到對(duì)圖像增強(qiáng)的效果。然后再將這12位裸數(shù)據(jù)傳輸給DM36X系統(tǒng),并在DM36X系統(tǒng)中完成色彩空間轉(zhuǎn)換、伽馬校正、RGB轉(zhuǎn)YUV、邊緣增強(qiáng)等一系列處理。最終將處理過的視頻圖像數(shù)據(jù)以H.264標(biāo)準(zhǔn)壓縮后通過以太網(wǎng)接口傳送到TCP/IP網(wǎng)絡(luò),完成用戶通過遠(yuǎn)程PC機(jī)客戶端上實(shí)時(shí)監(jiān)控視頻。
MT9M034(從設(shè)備)、FPGA(從設(shè)備)、DM36X(主設(shè)備)之間通過I2C總線進(jìn)行通信。DM36X作為主設(shè)備不僅可通過I2C總線對(duì)MT9M034進(jìn)行配置,還可對(duì)FPGA進(jìn)行簡(jiǎn)單控制,如圖3所示。
原DM36X IPNC的驅(qū)動(dòng)程序是針對(duì)MT9T031傳感器設(shè)計(jì)的。而本系統(tǒng)中采用的圖像傳感器是MT9M034。MTM034和MT9T031雖均是美光公司推出的圖像傳感器,寄存器位寬均為16 bit,但其寄存器編址位寬是有差別的,MT9T031傳感器的寄存器編址是8 bit,而MT9M034傳感器的寄存器編址是16 bit。為了使DM36X能對(duì)MT9M034傳感器進(jìn)行配置,需要對(duì)DM36X的驅(qū)動(dòng)進(jìn)行移植。
2 FPGA硬件電路設(shè)計(jì)
如圖4所示,在FPGA上需要設(shè)計(jì)的電路包括圖像捕獲電路、數(shù)據(jù)校正電路、RAW轉(zhuǎn)亮度電路、CLAHE色調(diào)映射電路和用于調(diào)試圖像傳感器的VGA顯示電路。
DM36X將MT9M034配置好并啟動(dòng)后,圖像傳感器會(huì)輸出12 bit的HDR圖像數(shù)據(jù),這些數(shù)據(jù)直接進(jìn)入圖像捕獲電路模塊,此模塊主要是對(duì)數(shù)據(jù)進(jìn)行標(biāo)記和對(duì)行、列、幀等進(jìn)行計(jì)算,為后面的電路設(shè)計(jì)提供必要的參數(shù)。MT9M034圖像傳感器通過分段性覆蓋整個(gè)亮度域的3次曝光合成一副20 bit位寬的HDR圖像,并將20 bit亮度分三段折線模擬對(duì)數(shù)壓縮到12 bit輸出,增加了傳感器的實(shí)時(shí)性。因?yàn)槠胀ǖ娘@示器只能顯示8 bit數(shù)據(jù),所以需要色調(diào)映射算法將HDR圖像壓縮成8 bit低動(dòng)態(tài)范圍圖像(Low Dynamic Range Image,HDRI)這樣既可保持圖像整體明暗效果,又可使圖像的細(xì)節(jié)部分很好的體現(xiàn)出來。由于傳感器內(nèi)部的三段線性壓縮和標(biāo)準(zhǔn)的對(duì)數(shù)壓縮曲線之間具有一定的差距,會(huì)使原HDR圖像損失許多的細(xì)節(jié)信息,若直接進(jìn)行色調(diào)映射算法的處理的話會(huì)影響圖像的對(duì)比度,所以在進(jìn)行色調(diào)映射之前需要進(jìn)行對(duì)數(shù)據(jù)進(jìn)行校正,最大程度上消除傳感器三段線性壓縮造成的誤差,然后在進(jìn)行對(duì)數(shù)壓縮這樣就可將整個(gè)圖像的亮度壓縮到一個(gè)較小的范圍內(nèi),最后在通過色調(diào)映射算法實(shí)現(xiàn)圖像效果的增強(qiáng)。由于時(shí)間原因在FPGA中僅實(shí)現(xiàn)圖像的抓取電路,通過Nios2圖像抓取電路向PC機(jī)中存入一幀圖像用于圖像效果的調(diào)試,其中抓取的圖像每個(gè)像素位寬是12 bit裸數(shù)據(jù),在Matlab中進(jìn)行顯示,如圖5所示。
3 MT9M034驅(qū)動(dòng)移植
3.1 傳感器特性
MT9M034傳感器是美光公司推出應(yīng)用于安防領(lǐng)域的高動(dòng)態(tài)范圍圖像傳感器。該傳感器具有全局運(yùn)動(dòng)補(bǔ)償功能,最高可提供每秒45幀下1 280×960分辨率的視頻拍攝,支持線性模式和高動(dòng)態(tài)范圍模式。傳感器具有并行和串行差分兩種數(shù)據(jù)輸出接口。并行接口數(shù)據(jù)速率低,概念簡(jiǎn)單,便于實(shí)現(xiàn),在本系統(tǒng)中采用并行接口,在后續(xù)開發(fā)中為了提高速度可考慮采用差分串行接口。
3.2 DM36X的I2C驅(qū)動(dòng)移植
I2C(Inter-Integrated Cireuit)總線是由Philips公司開發(fā)的一種同步串行總線協(xié)議,其是一種多向控制線,可讓多個(gè)芯片連接到同一總線結(jié)構(gòu)上共同實(shí)施數(shù)據(jù)傳輸。DM36 X的I2C驅(qū)動(dòng)架構(gòu)如圖6所示。
首先應(yīng)用程序drv_i2c.c根據(jù)不同傳感器的參數(shù),將寄存器個(gè)數(shù)、寄存器地址位數(shù)寄存器值位數(shù)等配置信息存儲(chǔ)在I2C_TRansferPrm結(jié)構(gòu)中,其次通過I2C_IOCTL_CMD_MAKE()函數(shù)將這些具體的寄存器信息生成相應(yīng)的命令。這些命令由ioctl()函數(shù)傳遞給內(nèi)核空間中的設(shè)備驅(qū)動(dòng)dev_i2c.c,在設(shè)備驅(qū)動(dòng)程序中I2C_dev.Ioctl()函數(shù)對(duì)將對(duì)命令進(jìn)行解析,根據(jù)不同的命令進(jìn)行不同的操作,這里較為重要的兩個(gè)命令是:(1)I2C_CMD_SET_DEV_ADDR,設(shè)置設(shè)備地址;(2)I2C_CMD_WRITE將用戶空間的配置信息復(fù)制到內(nèi)核空間,并存
儲(chǔ)在I2C_TransferPrm結(jié)構(gòu)中。最終通過I2C_write()、I2C_read()函數(shù)調(diào)用I2C_transfer()將數(shù)據(jù)發(fā)出。在I2C_write()、I2C_read()中都是以I2C_msg作為傳輸單元的。
struct I2C_msg {
_u16 addr;從設(shè)備地址
_u16 flags;標(biāo)志位,區(qū)分讀寫等
_u16 len;消息單元長(zhǎng)度
_u8 * buf;數(shù)據(jù)緩存,存儲(chǔ)發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)。
};
I2C_write()、I2C_read()函數(shù)的主要工作就是設(shè)置I2C_msg,將寄存器地址(regAddr)和寄存器值(regValue)寫入I2C_msg的數(shù)據(jù)緩存buf中,并調(diào)用I2C_transfer進(jìn)行數(shù)據(jù)傳輸,達(dá)到對(duì)傳感器寄存器配置的目的。
根據(jù)以上分析可知,將I2C驅(qū)動(dòng)移植到MT9M034上,只需修改應(yīng)用程序drv_i2c.c和設(shè)備驅(qū)動(dòng)程序dev_i2c.c即可,I2C_core及以下部分的內(nèi)容屬于內(nèi)核部分,其接口都是統(tǒng)一針對(duì)Davinci平臺(tái)下的,故無需進(jìn)行分析和修改。由于MT9M034的寄存器是16 bit編址,故需增加16 bit寄存器讀寫函數(shù)DRV_i2cWrite16()、DRV_i2cRead16()。另外在I2C_Tra nsferPrm結(jié)構(gòu)中增加16 bit寄存器地址指針;而且為了方便區(qū)分16 bit寄存器和8 bit寄存器,增加寄存器大小成員regSize。
在drv_i2c.c中增加I2C_write16()、I2C_read16()函數(shù),這兩個(gè)函數(shù)與I2C_write()、I2C_read()相似。只是在I2C_msg的數(shù)據(jù)緩存中存入regAddr[15:8]、regAddr[7:0]、regValue[15:8]、regValue[7:0],使I2C可讀寫16位數(shù)據(jù)。通過以上修改,I2C的驅(qū)動(dòng)程序移植完成。
3.3 DM36X前端的驅(qū)動(dòng)移植
I2C驅(qū)動(dòng)移植完成后僅可使DM36X對(duì)圖像傳感器進(jìn)行配置工作,為使DM36X成功接收來自傳感器的視頻數(shù)據(jù),還需要對(duì)DM36X的視頻處理前端(Video Processing Front End,VPFE)驅(qū)動(dòng)進(jìn)行相應(yīng)的修改來添加新的傳感器驅(qū)動(dòng)程序。DM36X的DVSDK中已對(duì)VPFE驅(qū)動(dòng)做了多次封裝,將與圖像傳感器相關(guān)的代碼隔離到了用戶區(qū),這樣方便用戶對(duì)源程序進(jìn)行修改和移植,并根據(jù)不同的需要來添加已知型號(hào)的CMOS圖像傳感器驅(qū)動(dòng)。通過對(duì)VPFE源程序的修改實(shí)現(xiàn)兩個(gè)功能,一方面根據(jù)視頻圖像的分辨率和幀率等信息向DM36X驅(qū)動(dòng)提供寄存器的配置信息,另一方面為MT9M034傳感器提供以I2C為接口的控制和配置功能。
4 測(cè)試結(jié)果
確保硬件電路連接正確并上電后,將編譯好的程序下載到DM36X中啟動(dòng),打開遠(yuǎn)程PC機(jī)終端開啟網(wǎng)頁(yè)客戶端或者VLC播放器輸入用戶名和密碼,可顯示1 280×720分辨率每秒30幀的視頻圖像,說明DM36X的驅(qū)動(dòng)移植正確,并通過I2C總線將傳感器配置成功。本系統(tǒng)的測(cè)試結(jié)果如圖7所示,從圖中可觀察到在室內(nèi)和室外光照強(qiáng)度相差較大的情況下,室內(nèi)暗處和室外亮處的景物均可被觀察到,具有較高的動(dòng)態(tài)范圍,保留了場(chǎng)景中絕大部分的細(xì)節(jié),充分體現(xiàn)了本IP Camera的優(yōu)勢(shì)。
5 結(jié)束語(yǔ)
在安防領(lǐng)域,對(duì)于視頻監(jiān)控設(shè)備的要求不斷的提高,本文是基于FPGA和DM36X聯(lián)合硬件平臺(tái)開發(fā)的一款高動(dòng)態(tài)范圍網(wǎng)絡(luò)監(jiān)控?cái)z像機(jī),通過對(duì)DM36X視頻前端驅(qū)動(dòng)的分析和移植,已完成DM36X對(duì)整個(gè)平臺(tái)的控制工作,并實(shí)現(xiàn)1 280×720分辨率每秒30幀的實(shí)時(shí)播放。較傳統(tǒng)的網(wǎng)絡(luò)攝像機(jī)可更好地應(yīng)對(duì)復(fù)雜光照?qǐng)鼍埃瑥亩臄z出較高動(dòng)態(tài)范圍的視頻影像,使場(chǎng)景中更多的細(xì)節(jié)可被觀察到,對(duì)于提高安防監(jiān)控能力有著重要的意義。由于圖像傳感器輸出的數(shù)據(jù)是由20 bit壓縮到12 bit的,造成圖像數(shù)據(jù)有一定的損失,對(duì)比度較低,為了彌補(bǔ)這些不足,在系統(tǒng)中添加了FPGA系統(tǒng),由于時(shí)間關(guān)系FPGA部分只完成圖像抓取電路的設(shè)計(jì),后續(xù)的開發(fā)中將重點(diǎn)對(duì)其他模塊進(jìn)行硬件實(shí)現(xiàn),完善整個(gè)圖像采集處理系統(tǒng)。