基于FPGA+DM36X的IP攝像機(jī)平臺(tái)
李昂1,陳文藝2,楊輝2,趙曉光1
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安710061;2.西安郵電大學(xué) 物聯(lián)網(wǎng)與兩化融合研究院,陜西 西安710061)
摘要針對(duì)目前安防監(jiān)控設(shè)備動(dòng)態(tài)范圍較低的問(wèn)題,文中提出了基于FPGA和DM36X的高動(dòng)態(tài)范圍網(wǎng)絡(luò)攝像機(jī)方案。該方案采用高動(dòng)態(tài)圖像傳感器進(jìn)行圖像采集,并以FPGA和DM36X作為圖像處理的核心。FPGA負(fù)責(zé)對(duì)高動(dòng)態(tài)圖像進(jìn)行增強(qiáng)處理,彌補(bǔ)了DM36X對(duì)高動(dòng)態(tài)圖像處理的不足,并結(jié)合DM36X在視頻圖像編碼及傳輸上的優(yōu)勢(shì),最終實(shí)現(xiàn)1 280×720每秒30幀的高動(dòng)態(tài)范圍視頻圖像的采集、處理和傳輸。
關(guān)鍵詞安防監(jiān)空;FPGA;DM36X;高動(dòng)態(tài)范圍
收稿日期:2015-01-17
作者簡(jiǎn)介:李昂(1987—),男,碩士研究生。研究方向:嵌入式方向。E-mail:liang871210@sina.com。陳文藝(1964—),男,博士,教授,碩士生導(dǎo)師。研究方向:通信集成電路設(shè)計(jì),視頻圖像實(shí)時(shí)處理及傳輸。
doi:10.16180/j.cnki.issn1007-7820.2015.09.038
中圖分類(lèi)號(hào)TP391.41
IP Camera Platform Based on FPGA+DM36X
LI Ang1,CHEN Wenyi2,YANG Hui2,ZHAO Xiaoguang1
(1.School of Communication and Information Engineering,Xi’an University of Posts and Telecommunications,
Xi’an 710061,China;2.Institute of Internet of Things and Integration of IT Application and Industrialization,
Xi’an University of Posts and Telecommunications,Xi’an 710061,China)
AbstractThis article proposes a program of IP camera platform based on FPGA+DM36X for a high dynamic range of security monitoring equipment.The program uses high dynamic image sensor for image acquisition with FPGA and DM36X as the core of image processing.FPGA is responsible for the high dynamic image enhancement processing,making up for the lack of DM36X in high-dynamic image processing.The advantage of DM36X in video encoding and transmission yields a high resolution of 1 280×720 at a transmission speed of 30 frames per second.
Keywordssecurity monitoring;FPGA;DM36X;high dynamic range
近年來(lá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)[1]。但由于高動(dòng)態(tài)攝像機(jī)的數(shù)據(jù)量非常大,同時(shí)對(duì)圖像處理的要求也很高,這就增加了系統(tǒng)的復(fù)雜性。要同時(shí)滿(mǎn)足高質(zhì)量的視頻圖像處理效果和實(shí)時(shí)傳輸,單憑DM36X的處理能力已遠(yuǎn)不夠,且DM36X內(nèi)部的視頻處理算法已固定,眾多優(yōu)秀的圖像處理算法無(wú)法及時(shí)的添加進(jìn)去,這也對(duì)DM36X圖像處理能力的升級(jí)造成了一定的困難。而FPGA芯片處理速度快、靈活性高[2],可根據(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),滿(mǎn)足系統(tǒng)實(shí)時(shí)性要求。將FPGA和DM36X共同運(yùn)用在網(wǎng)絡(luò)攝像機(jī)平臺(tái)中可充分發(fā)揮各自的優(yōu)勢(shì)。這種設(shè)計(jì)不僅使得系統(tǒng)在日后擴(kuò)充和再次開(kāi)發(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)、編碼和傳輸處理核心,最終完成用戶(hù)通過(guò)遠(yuǎn)程PC機(jī)客戶(hù)端上觀看1 280×720分辨率,每秒30幀的實(shí)時(shí)視頻。
1總體方案
系統(tǒng)架構(gòu)如圖1所示,MT9M034采集HDR視頻信號(hào),FPGA負(fù)責(zé)對(duì)HDR視頻圖像進(jìn)行增強(qiáng)處理,DM36X負(fù)責(zé)對(duì)增強(qiáng)后的HDR圖像進(jìn)行編碼傳輸?shù)忍幚怼?/p>
圖1 系統(tǒng)架構(gòu)
系統(tǒng)3部分之間的數(shù)據(jù)流如圖2所示。
圖2 系統(tǒng)數(shù)據(jù)流
圖像傳感器MT9M034經(jīng)過(guò)配置后輸出動(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)等一系列處理[3]。最終將處理過(guò)的視頻圖像數(shù)據(jù)以H.264標(biāo)準(zhǔn)壓縮后通過(guò)以太網(wǎng)接口傳送到TCP/IP網(wǎng)絡(luò),完成用戶(hù)通過(guò)遠(yuǎn)程PC機(jī)客戶(hù)端上實(shí)時(shí)監(jiān)控視頻[4]。
MT9M034(從設(shè)備)、FPGA(從設(shè)備)、DM36X(主設(shè)備)之間通過(guò)I2C總線進(jìn)行通信。DM36X作為主設(shè)備不僅可通過(guò)I2C總線對(duì)MT9M034進(jìn)行配置,還可對(duì)FPGA進(jìn)行簡(jiǎn)單控制,如圖3所示。
圖3 I 2C控制
原DM36X IPNC的驅(qū)動(dòng)程序是針對(duì)MT9T031傳感器設(shè)計(jì)的。而本系統(tǒng)中采用的圖像傳感器是MT9M034。MT9M034和MT9T031雖均是美光公司推出的圖像傳感器,寄存器位寬均為16 bit,但其寄存器編址位寬是有差別的,MT9T031傳感器的寄存器編址是8 bit,而MT9M034傳感器的寄存器編址是16 bit[5]。為了使DM36X能對(duì)MT9M034傳感器進(jìn)行配置,需要對(duì)DM36X的驅(qū)動(dòng)進(jìn)行移植。
2FPGA硬件電路設(shè)計(jì)
如圖4所示,在FPGA 上需要設(shè)計(jì)的電路包括圖像捕獲電路、數(shù)據(jù)校正電路、RAW轉(zhuǎn)亮度電路、CLAHE色調(diào)映射電路和用于調(diào)試圖像傳感器的VGA顯示電路。
圖4 FPGA系統(tǒng)架構(gòu)
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圖像傳感器通過(guò)分段性覆蓋整個(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)出來(lái)[6]。由于傳感器內(nèi)部的三段線性壓縮和標(biāo)準(zhǔn)的對(duì)數(shù)壓縮曲線之間具有一定的差距,會(huì)使原HDR圖像損失許多的細(xì)節(jié)信息,若直接進(jìn)行色調(diào)映射算法的處理的話(huà)會(huì)影響圖像的對(duì)比度,所以在進(jìn)行色調(diào)映射之前需要進(jìn)行對(duì)數(shù)據(jù)進(jìn)行校正,最大程度上消除傳感器三段線性壓縮造成的誤差[7],然后在進(jìn)行對(duì)數(shù)壓縮這樣就可將整個(gè)圖像的亮度壓縮到一個(gè)較小的范圍內(nèi),最后在通過(guò)色調(diào)映射算法實(shí)現(xiàn)圖像效果的增強(qiáng)。由于時(shí)間原因在FPGA中僅實(shí)現(xiàn)圖像的抓取電路,通過(guò)Nios2圖像抓取電路向PC機(jī)中存入一幀圖像用于圖像效果的調(diào)試,其中抓取的圖像每個(gè)像素位寬是12 bit裸數(shù)據(jù),在Matlab中進(jìn)行顯示,如圖5所示。
圖5 抓取的一幀圖像
3MT9M034驅(qū)動(dòng)移植
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ù)開(kāi)發(fā)中為了提高速度可考慮采用差分串行接口。
I2C(Inter-Integrated Circuit)總線是由Philips公司開(kāi)發(fā)的一種同步串行總線協(xié)議,其是一種多向控制線,可讓多個(gè)芯片連接到同一總線結(jié)構(gòu)上共同實(shí)施數(shù)據(jù)傳輸[8]。DM36X的I2C驅(qū)動(dòng)架構(gòu)如圖6所示。
圖6 I 2C驅(qū)動(dòng)架構(gòu)
首先應(yīng)用程序drv_i2c.c根據(jù)不同傳感器的參數(shù),將寄存器個(gè)數(shù)、寄存器地址位數(shù)寄存器值位數(shù)等配置信息存儲(chǔ)在I2C_TransferPrm結(jié)構(gòu)中,其次通過(guò)I2C_IOCTL_CMD_MAKE()函數(shù)將這些具體的寄存器信息生成相應(yīng)的命令。這些命令由ioctl()函數(shù)傳遞給內(nèi)核空間中的設(shè)備驅(qū)動(dòng)dev_i2c.c,在設(shè)備驅(qū)動(dòng)程序中I2C_devIoctl()函數(shù)對(duì)將對(duì)命令進(jìn)行解析,根據(jù)不同的命令進(jìn)行不同的操作,這里較為重要的兩個(gè)命令是:(1)I2C_CMD_SET_DEV_ADDR,設(shè)置設(shè)備地址;(2)I2C_CMD_WRITE將用戶(hù)空間的配置信息復(fù)制到內(nèi)核空間,并存儲(chǔ)在I2C_TransferPrm結(jié)構(gòu)中。最終通過(guò)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ū)分讀寫(xiě)等
_u16 len;消息單元長(zhǎng)度
_u8 *buf;數(shù)據(jù)緩存,存儲(chǔ)發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)。
};
I2C_write()、I2C_read()函數(shù)的主要工作就是設(shè)置I2C_msg,將寄存器地址(regAddr)和寄存器值(regValue)寫(xiě)入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)下的,故無(wú)需進(jìn)行分析和修改。由于MT9M034的寄存器是16 bit編址,故需增加16 bit寄存器讀寫(xiě)函數(shù)DRV_i2cWrite16()、DRV_i2cRead16()。另外在I2C_TransferPrm結(jié)構(gòu)中增加16 bit寄存器地址指針;而且為了方便區(qū)分16 bit寄存器和8 bit寄存器,增加寄存器大小成員regSize。
typedef struct {
unsigned char dataSize;
unsigned char count;
unsigned char *reg;
unsigned short *reg16;
unsigned char regSize;
void *value;配置的寄存器值,16 bit或8 bit
} I2C_TransferPrm;
在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可讀寫(xiě)16位數(shù)據(jù)。通過(guò)以上修改,I2C的驅(qū)動(dòng)程序移植完成。
I2C驅(qū)動(dòng)移植完成后僅可使DM36X對(duì)圖像傳感器進(jìn)行配置工作,為使DM36X成功接收來(lái)自傳感器的視頻數(shù)據(jù),還需要對(duì)DM36X的視頻處理前端(Video Processing Front End,VPFE)驅(qū)動(dòng)進(jìn)行相應(yīng)的修改來(lái)添加新的傳感器驅(qū)動(dòng)程序。DM36X的DVSDK中已對(duì)VPFE驅(qū)動(dòng)做了多次封裝,將與圖像傳感器相關(guān)的代碼隔離到了用戶(hù)區(qū),這樣方便用戶(hù)對(duì)源程序進(jìn)行修改和移植,并根據(jù)不同的需要來(lái)添加已知型號(hào)的CMOS圖像傳感器驅(qū)動(dòng)。通過(guò)對(duì)VPFE源程序的修改實(shí)現(xiàn)兩個(gè)功能,一方面根據(jù)視頻圖像的分辨率和幀率等信息向DM36X驅(qū)動(dòng)提供寄存器的配置信息,另一方面為MT9M034傳感器提供以I2C為接口的控制和配置功能。
4測(cè)試結(jié)果
確保硬件電路連接正確并上電后,將編譯好的程序下載到DM36X中啟動(dòng),打開(kāi)遠(yuǎn)程PC機(jī)終端開(kāi)啟網(wǎng)頁(yè)客戶(hù)端或者VLC播放器輸入用戶(hù)名和密碼,可顯示1 280×720分辨率每秒30幀的視頻圖像,說(shuō)明DM36X的驅(qū)動(dòng)移植正確,并通過(guò)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ì)。
圖7 測(cè)試結(jié)果
5結(jié)束語(yǔ)
在安防領(lǐng)域,對(duì)于視頻監(jiān)控設(shè)備的要求不斷的提高,本文是基于FPGA和DM36X聯(lián)合硬件平臺(tái)開(kāi)發(fā)的一款高動(dòng)態(tài)范圍網(wǎng)絡(luò)監(jiān)控?cái)z像機(jī),通過(guò)對(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)鼍?從而拍攝出較高動(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ù)的開(kāi)發(fā)中將重點(diǎn)對(duì)其他模塊進(jìn)行硬件實(shí)現(xiàn),完善整個(gè)圖像采集處理系統(tǒng)。
參考文獻(xiàn)
[1]馬洪蕊,蔣心曉,劉邵南.嵌入式視頻應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2011.
[2]王丹琦,吳毅,甘曉炫.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2014,22(21):153-158.
[3]Texas Instruments.Video processing front end(VPFE)[M].Tex,USA:Texas Instruments,2007.
[4]王雅,陳文藝,葉欣.基于DM365的嵌入式監(jiān)控平臺(tái)研究[J].保密科學(xué)與技術(shù),2013(2):33-38.
[5]Aptina Corporation.1/3-inch CMOS digital image sensor MT9M034 data sheet[M].San Jose,CA:Aptina Corporation,2011.
[6]Boschetti A,Adami N,Leonardi R.High dynamic range image tone mapping based on local histogram equalization[C].Mosico:ICME,2010:1130-1135.
[7]郭少宸,陳文藝.圖像傳感器MT9M034輸出圖像數(shù)據(jù)的校正[J].電子科技,2014,27(9):54-61.
[8]朱南皓,李正祥.嵌入式Linux中I2C設(shè)備驅(qū)動(dòng)程序的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010(11):67-69.