新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA+DM36X的IP攝像機平臺

基于FPGA+DM36X的IP攝像機平臺

作者: 時間:2016-10-22 來源:網(wǎng)絡(luò) 收藏

近年來,隨著信息化技術(shù)以及物聯(lián)網(wǎng)的發(fā)展,對于視頻監(jiān)控設(shè)備的要求不斷的在提高,將(High Dynamic Range,HDR)攝像機代替?zhèn)鹘y(tǒng)攝像機以提高監(jiān)控質(zhì)量成為了監(jiān)控設(shè)備的發(fā)展趨勢。TI公司達芬奇視頻處理技術(shù)在網(wǎng)絡(luò)攝像機視頻監(jiān)控方面的成功運用,使得芯片與其他芯片相比具有低功耗、小尺寸、低成本、高性能等特點。但由于高動態(tài)攝像機的數(shù)據(jù)量非常大,同時對圖像處理的要求也很高,這就增加了系統(tǒng)的復雜性。要同時滿足高質(zhì)量的視頻圖像處理效果和實時傳輸,單憑的處理能力已遠不夠,且內(nèi)部的視頻處理算法已固定,眾多優(yōu)秀的圖像處理算法無法及時的添加進去,這也對DM36X圖像處理能力的升級造成了一定的困難。而芯片處理速度快、靈活性高,可根據(jù)各種優(yōu)秀算法進行較好的設(shè)計,所以系統(tǒng)選用進行前端HDR視頻圖像增強預處理部分,由此可在較大程度上減少DM36X的工作量,彌補其在高動態(tài)視頻處理上的不足,使DM36X能完全發(fā)揮高速編碼和傳輸效的特點,滿足系統(tǒng)實時性要求。將和DM36X共同運用在網(wǎng)絡(luò)攝像機平臺中可充分發(fā)揮各自的優(yōu)勢。這種設(shè)計不僅使得系統(tǒng)在日后擴充和再次開發(fā)上提供了足夠的靈活性,且有利于整個系統(tǒng)的升級與維護。

本文引用地址:http://m.butianyuan.cn/article/201610/309164.htm

本系統(tǒng)是在TI公司基于達芬奇技術(shù)TMD320DM36X處理器的IP Camera方案基礎(chǔ)之上搭建基于FPGA+DM36X的IP攝像機平臺,采用高動態(tài)網(wǎng)絡(luò)攝像機MT9M034進行圖像采集,以FPGA +DM36X作為HDR視頻圖像增強、編碼和傳輸處理核心,最終完成用戶通過遠程PC機客戶端上觀看1 280×720分辨率,每秒30幀的實時視頻。

1 總體方案

系統(tǒng)架構(gòu)如圖1所示,MT9M034采集HDR視頻信號,F(xiàn)PGA負責對HDR視頻圖像進行增強處理,DM36X負責對增強后的HDR圖像進行編碼傳輸?shù)忍幚怼?/p>

a.jpg

系統(tǒng)3部分之間的數(shù)據(jù)流如圖2所示。

圖像傳感器MT9M034經(jīng)過配置后輸出動態(tài)范圍為120 dB的HDR圖像。圖像數(shù)據(jù)的位寬是20 bit,可選擇性的壓縮成12 bit或14 bit。由于DM36X處理能力的限制,在本系統(tǒng)中將傳感器輸出數(shù)據(jù)位寬設(shè)置為12 bit,這就會造成圖像數(shù)據(jù)的損失。所以本方案在原IP Camera的基礎(chǔ)之上添加了FPGA系統(tǒng),可根據(jù)需要靈活增加底層的圖像處理算法。首先圖像傳感器輸出的視頻數(shù)據(jù)在FPGA上進行捕獲和對數(shù)壓縮等處理,達到對圖像增強的效果。然后再將這12位裸數(shù)據(jù)傳輸給DM36X系統(tǒng),并在DM36X系統(tǒng)中完成色彩空間轉(zhuǎn)換、伽馬校正、RGB轉(zhuǎn)YUV、邊緣增強等一系列處理。最終將處理過的視頻圖像數(shù)據(jù)以H.264標準壓縮后通過以太網(wǎng)接口傳送到TCP/IP網(wǎng)絡(luò),完成用戶通過遠程PC機客戶端上實時監(jiān)控視頻。

MT9M034(從設(shè)備)、FPGA(從設(shè)備)、DM36X(主設(shè)備)之間通過I2C總線進行通信。DM36X作為主設(shè)備不僅可通過I2C總線對MT9M034進行配置,還可對FPGA進行簡單控制,如圖3所示。

b.jpg

原DM36X IPNC的驅(qū)動程序是針對MT9T031傳感器設(shè)計的。而本系統(tǒng)中采用的圖像傳感器是MT9M034。MTM034和MT9T031雖均是美光公司推出的圖像傳感器,寄存器位寬均為16 bit,但其寄存器編址位寬是有差別的,MT9T031傳感器的寄存器編址是8 bit,而MT9M034傳感器的寄存器編址是16 bit。為了使DM36X能對MT9M034傳感器進行配置,需要對DM36X的驅(qū)動進行移植。

2 FPGA硬件電路設(shè)計

c.jpg

如圖4所示,在FPGA上需要設(shè)計的電路包括圖像捕獲電路、數(shù)據(jù)校正電路、RAW轉(zhuǎn)亮度電路、CLAHE色調(diào)映射電路和用于調(diào)試圖像傳感器的VGA顯示電路。

DM36X將MT9M034配置好并啟動后,圖像傳感器會輸出12 bit的HDR圖像數(shù)據(jù),這些數(shù)據(jù)直接進入圖像捕獲電路模塊,此模塊主要是對數(shù)據(jù)進行標記和對行、列、幀等進行計算,為后面的電路設(shè)計提供必要的參數(shù)。MT9M034圖像傳感器通過分段性覆蓋整個亮度域的3次曝光合成一副20 bit位寬的HDR圖像,并將20 bit亮度分三段折線模擬對數(shù)壓縮到12 bit輸出,增加了傳感器的實時性。因為普通的顯示器只能顯示8 bit數(shù)據(jù),所以需要色調(diào)映射算法將HDR圖像壓縮成8 bit低動態(tài)范圍圖像(Low Dynamic Range Image,HDRI)這樣既可保持圖像整體明暗效果,又可使圖像的細節(jié)部分很好的體現(xiàn)出來。由于傳感器內(nèi)部的三段線性壓縮和標準的對數(shù)壓縮曲線之間具有一定的差距,會使原HDR圖像損失許多的細節(jié)信息,若直接進行色調(diào)映射算法的處理的話會影響圖像的對比度,所以在進行色調(diào)映射之前需要進行對數(shù)據(jù)進行校正,最大程度上消除傳感器三段線性壓縮造成的誤差,然后在進行對數(shù)壓縮這樣就可將整個圖像的亮度壓縮到一個較小的范圍內(nèi),最后在通過色調(diào)映射算法實現(xiàn)圖像效果的增強。由于時間原因在FPGA中僅實現(xiàn)圖像的抓取電路,通過Nios2圖像抓取電路向PC機中存入一幀圖像用于圖像效果的調(diào)試,其中抓取的圖像每個像素位寬是12 bit裸數(shù)據(jù),在Matlab中進行顯示,如圖5所示。

d.jpg

3 MT9M034驅(qū)動移植

3.1 傳感器特性

MT9M034傳感器是美光公司推出應(yīng)用于安防領(lǐng)域的圖像傳感器。該傳感器具有全局運動補償功能,最高可提供每秒45幀下1 280×960分辨率的視頻拍攝,支持線性模式和模式。傳感器具有并行和串行差分兩種數(shù)據(jù)輸出接口。并行接口數(shù)據(jù)速率低,概念簡單,便于實現(xiàn),在本系統(tǒng)中采用并行接口,在后續(xù)開發(fā)中為了提高速度可考慮采用差分串行接口。

3.2 DM36X的I2C驅(qū)動移植

I2C(Inter-Integrated Cireuit)總線是由Philips公司開發(fā)的一種同步串行總線協(xié)議,其是一種多向控制線,可讓多個芯片連接到同一總線結(jié)構(gòu)上共同實施數(shù)據(jù)傳輸。DM36 X的I2C驅(qū)動架構(gòu)如圖6所示。

e.jpg

首先應(yīng)用程序drv_i2c.c根據(jù)不同傳感器的參數(shù),將寄存器個數(shù)、寄存器地址位數(shù)寄存器值位數(shù)等配置信息存儲在I2C_TRansferPrm結(jié)構(gòu)中,其次通過I2C_IOCTL_CMD_MAKE()函數(shù)將這些具體的寄存器信息生成相應(yīng)的命令。這些命令由ioctl()函數(shù)傳遞給內(nèi)核空間中的設(shè)備驅(qū)動dev_i2c.c,在設(shè)備驅(qū)動程序中I2C_dev.Ioctl()函數(shù)對將對命令進行解析,根據(jù)不同的命令進行不同的操作,這里較為重要的兩個命令是:(1)I2C_CMD_SET_DEV_ADDR,設(shè)置設(shè)備地址;(2)I2C_CMD_WRITE將用戶空間的配置信息復制到內(nèi)核空間,并存

儲在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;標志位,區(qū)分讀寫等

_u16 len;消息單元長度

_u8 * buf;數(shù)據(jù)緩存,存儲發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)。

};

I2C_write()、I2C_read()函數(shù)的主要工作就是設(shè)置I2C_msg,將寄存器地址(regAddr)和寄存器值(regValue)寫入I2C_msg的數(shù)據(jù)緩存buf中,并調(diào)用I2C_transfer進行數(shù)據(jù)傳輸,達到對傳感器寄存器配置的目的。

根據(jù)以上分析可知,將I2C驅(qū)動移植到MT9M034上,只需修改應(yīng)用程序drv_i2c.c和設(shè)備驅(qū)動程序dev_i2c.c即可,I2C_core及以下部分的內(nèi)容屬于內(nèi)核部分,其接口都是統(tǒng)一針對Davinci平臺下的,故無需進行分析和修改。由于MT9M034的寄存器是16 bit編址,故需增加16 bit寄存器讀寫函數(shù)DRV_i2cWrite16()、DRV_i2cRead16()。另外在I2C_Tra nsferPrm結(jié)構(gòu)中增加16 bit寄存器地址指針;而且為了方便區(qū)分16 bit寄存器和8 bit寄存器,增加寄存器大小成員regSize。

f.jpg

在drv_i2c.c中增加I2C_write16()、I2C_read16()函數(shù),這兩個函數(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ū)動程序移植完成。

3.3 DM36X前端的驅(qū)動移植

I2C驅(qū)動移植完成后僅可使DM36X對圖像傳感器進行配置工作,為使DM36X成功接收來自傳感器的視頻數(shù)據(jù),還需要對DM36X的視頻處理前端(Video Processing Front End,VPFE)驅(qū)動進行相應(yīng)的修改來添加新的傳感器驅(qū)動程序。DM36X的DVSDK中已對VPFE驅(qū)動做了多次封裝,將與圖像傳感器相關(guān)的代碼隔離到了用戶區(qū),這樣方便用戶對源程序進行修改和移植,并根據(jù)不同的需要來添加已知型號的CMOS圖像傳感器驅(qū)動。通過對VPFE源程序的修改實現(xiàn)兩個功能,一方面根據(jù)視頻圖像的分辨率和幀率等信息向DM36X驅(qū)動提供寄存器的配置信息,另一方面為MT9M034傳感器提供以I2C為接口的控制和配置功能。

4 測試結(jié)果

確保硬件電路連接正確并上電后,將編譯好的程序下載到DM36X中啟動,打開遠程PC機終端開啟網(wǎng)頁客戶端或者VLC播放器輸入用戶名和密碼,可顯示1 280×720分辨率每秒30幀的視頻圖像,說明DM36X的驅(qū)動移植正確,并通過I2C總線將傳感器配置成功。本系統(tǒng)的測試結(jié)果如圖7所示,從圖中可觀察到在室內(nèi)和室外光照強度相差較大的情況下,室內(nèi)暗處和室外亮處的景物均可被觀察到,具有較高的動態(tài)范圍,保留了場景中絕大部分的細節(jié),充分體現(xiàn)了本IP Camera的優(yōu)勢。

g.jpg

5 結(jié)束語

在安防領(lǐng)域,對于視頻監(jiān)控設(shè)備的要求不斷的提高,本文是基于FPGA和DM36X聯(lián)合硬件平臺開發(fā)的一款高動態(tài)范圍網(wǎng)絡(luò)監(jiān)控攝像機,通過對DM36X視頻前端驅(qū)動的分析和移植,已完成DM36X對整個平臺的控制工作,并實現(xiàn)1 280×720分辨率每秒30幀的實時播放。較傳統(tǒng)的網(wǎng)絡(luò)攝像機可更好地應(yīng)對復雜光照場景,從而拍攝出較高動態(tài)范圍的視頻影像,使場景中更多的細節(jié)可被觀察到,對于提高安防監(jiān)控能力有著重要的意義。由于圖像傳感器輸出的數(shù)據(jù)是由20 bit壓縮到12 bit的,造成圖像數(shù)據(jù)有一定的損失,對比度較低,為了彌補這些不足,在系統(tǒng)中添加了FPGA系統(tǒng),由于時間關(guān)系FPGA部分只完成圖像抓取電路的設(shè)計,后續(xù)的開發(fā)中將重點對其他模塊進行硬件實現(xiàn),完善整個圖像采集處理系統(tǒng)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉