DSP嵌入式視頻監(jiān)測(cè)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
隨著經(jīng)濟(jì)的飛速發(fā)展,人們的安防意識(shí)不斷增強(qiáng),視頻檢測(cè)系統(tǒng)越來(lái)越廣泛地被應(yīng)用于各行各業(yè)。如今,許多商場(chǎng)、銀行和智能小區(qū)中都安裝了紅外探頭或基于PC機(jī)的視頻監(jiān)測(cè)系統(tǒng),由于其價(jià)格高昂,可靠性不高,傳輸距離短、需要有人值守等。針對(duì)這種情況,尋求一種方法來(lái)改進(jìn)這一狀況,具有很大的實(shí)際意義。
近幾年,隨著DSP及嵌入式技術(shù)的快速發(fā)展,采用DSP嵌入式系統(tǒng)的視頻設(shè)備已在各領(lǐng)域中被廣泛應(yīng)用。本文利用ADSP Blackfin533(BF533)為核心處理器,設(shè)計(jì)了視頻檢測(cè)系統(tǒng),實(shí)現(xiàn)了視頻圖像的采集、處理和網(wǎng)絡(luò)傳輸,該系統(tǒng)具有體積小、功耗低、性能高、可便攜等優(yōu)點(diǎn)。
1 系統(tǒng)硬件平臺(tái)設(shè)計(jì)
系統(tǒng)工作原理:由圖像傳感器采集到的圖像信號(hào)以YUV(4:2:2)的格式輸出,通過(guò)BF533的PPI接口以DMA方式存入SDRAM。當(dāng)采集完一幀數(shù)據(jù)后,BF533從SDRAM中讀入數(shù)據(jù)進(jìn)行位圖數(shù)據(jù)格式轉(zhuǎn)化,將位圖圖像數(shù)據(jù)通過(guò)以太網(wǎng)接口傳輸?shù)竭h(yuǎn)程PC機(jī)上,然后系統(tǒng)繼續(xù)采集下一幀圖像。
1.1 處理器
Blackfin處理器是ADI公司與Intel公司2003年4月聯(lián)合開(kāi)發(fā)的體現(xiàn)高性能體系結(jié)構(gòu)的首款第四代DSP產(chǎn)品,主要面向嵌入式音頻、視頻和通信等領(lǐng)域。ADSP-BF533是目前Blackfin系列數(shù)字信號(hào)處理器中性能較高的一款,具有600MHz的主頻、雙16位的MAC(乘加器)和兩個(gè)40位的ALU(算術(shù)邏輯單元)、四個(gè)8位的視頻處理單元、八個(gè)算術(shù)寄存器、10個(gè)地址尋址單元,并且集成了大量的外圍設(shè)備和存儲(chǔ)器接口,每秒運(yùn)算速度最高達(dá)到1200MMAC(兆次乘法加法運(yùn)算),并且ADSP-BF533在達(dá)到600MHz性能水平時(shí)的功耗僅為280mW,能耗很小。在圖像處理上的優(yōu)點(diǎn)更為突出,可針對(duì)圖像特點(diǎn)運(yùn)用二維DMA傳輸數(shù)據(jù),大大加快和方便圖像數(shù)據(jù)的傳送和處理。ADSP-BF533系列DSP具有接口豐富,性能優(yōu)良,更具有視頻處理接口及獨(dú)立的視頻指令,特別適用于各種音視頻、網(wǎng)絡(luò)設(shè)備領(lǐng)域,充分滿足了系統(tǒng)技術(shù)指標(biāo)的要求,在實(shí)際中獲得了廣泛的應(yīng)用。
1.2 圖像傳感器
美國(guó)Omnivision公司的彩色圖像傳感器OV7660具有30萬(wàn)像素,芯片的像素陣列達(dá)到1300x1280,具有高靈敏度采光、低功耗電源供電等特點(diǎn)且功耗低、體積小,在攝像手機(jī)、網(wǎng)絡(luò)視頻等方面應(yīng)用比較廣泛。通過(guò)先進(jìn)的傳感器技術(shù),還可以通過(guò)減少或者消除圖像瑕玷中的普通光/電資源(如固定樣式噪音(FPN)、拖尾效應(yīng)、閃光等)來(lái)產(chǎn)生比較清晰、完全、穩(wěn)定的彩色圖像。對(duì)于本系統(tǒng)來(lái)說(shuō),是一種很好的選擇。
0V7660圖像傳感器,內(nèi)置自動(dòng)曝光控制(AEC)、自動(dòng)增益控制(AGC)、自動(dòng)白平衡(AWB)等功能,支持SXGA、VGA、QVGA、QQVGA、CIF、QCIF和QQCIF,可輸出RGB、YUV和YCbCr等多種視頻數(shù)據(jù)格式。0V7660通過(guò)一個(gè)專用的Camera InteRFace接口與核心處理芯片BF533的PPI接口連接,接口電路如圖1所示。
1. 3 系統(tǒng)硬件結(jié)構(gòu)
要完成系統(tǒng)的功能,除了處理器和圖像采集模塊,通過(guò)B1ackfin533的豐富接口,在開(kāi)發(fā)過(guò)程中還要用到以下模塊。
(1)SDRAM模塊為系統(tǒng)提供內(nèi)核運(yùn)行、程序運(yùn)行、數(shù)據(jù)緩存的空間;
(2)FLASH模塊為系統(tǒng)提供存儲(chǔ)空間;
(3)系統(tǒng)調(diào)試、移植、交叉編譯、需要UART接口和JTAG調(diào)試接口;
(4)圖像數(shù)據(jù)的網(wǎng)絡(luò)傳輸需要以太網(wǎng)接口。
當(dāng)然系統(tǒng)還應(yīng)有電源模塊、系統(tǒng)復(fù)位電路、時(shí)鐘模塊等,系統(tǒng)硬件結(jié)構(gòu)如圖2。
系統(tǒng)的軟件部分包括三部分,嵌入式uClinux(操作系統(tǒng),圖像傳感器0V7660和網(wǎng)絡(luò)控制器CS8911A的驅(qū)動(dòng)程序,系統(tǒng)的應(yīng)用程序。
2.1 嵌入式uClinux操作系統(tǒng)
本系統(tǒng)采用開(kāi)源、可剪裁、安全性和實(shí)時(shí)性好的嵌入式uClinux操作系統(tǒng)作為軟件開(kāi)發(fā)平臺(tái),保證了系統(tǒng)的穩(wěn)定性和數(shù)據(jù)的快速準(zhǔn)確傳輸,并提供了完善的網(wǎng)絡(luò)支持。uClinux并為應(yīng)用程序的設(shè)計(jì)提供了眾多API接口函數(shù),方便了編程實(shí)現(xiàn)過(guò)程。
嵌入式uClinux系統(tǒng)是由Boot Loader引導(dǎo)程序、系統(tǒng)內(nèi)核、根文件系統(tǒng)組成。軟件交叉編譯環(huán)境為Windows系統(tǒng)下的coLinux,該操作環(huán)境具有模擬uClinux操作系統(tǒng)的功能,在擁有colinux環(huán)境的基礎(chǔ)上,選擇合適的開(kāi)發(fā)工具可以加快開(kāi)發(fā)速度,節(jié)省開(kāi)發(fā)成本。軟件編程語(yǔ)言為標(biāo)準(zhǔn)C語(yǔ)言,具有良好的可移植性。
2.2 OV7660和CS8911A驅(qū)動(dòng)程序
Blackfin533 uClinux kernel中帶有一些硬件驅(qū)動(dòng)模塊,縮短了開(kāi)發(fā)周期。系統(tǒng)上電后,將自動(dòng)檢測(cè)視頻設(shè)備OV7660,視頻設(shè)備被檢測(cè)到后,將自動(dòng)調(diào)用在配置內(nèi)核時(shí)已經(jīng)加載到uClinux中的OV7660的驅(qū)動(dòng)程序模塊PPI_ov7660。
圖像數(shù)據(jù)的網(wǎng)絡(luò)傳輸在Linux的平臺(tái)上采用服務(wù)器/客戶端模型,網(wǎng)絡(luò)控制器CS8911A的驅(qū)動(dòng)程序因?yàn)橐呀?jīng)很成熟了并且對(duì)外公開(kāi),直接采用了開(kāi)發(fā)好并已經(jīng)移植到uClinux內(nèi)核中的設(shè)備驅(qū)動(dòng)程序。
2.3 系統(tǒng)應(yīng)用軟件設(shè)計(jì)
本系統(tǒng)的應(yīng)用軟件設(shè)計(jì)分為圖像采集設(shè)備初始化、數(shù)據(jù)格式轉(zhuǎn)化和圖像的捕捉三部分。視頻圖像采集的程序流程圖如圖3。
2.3.1 圖像采集設(shè)備初始化
對(duì)于uClinux操作系統(tǒng),它將設(shè)備看作文件,因此,想對(duì)設(shè)備進(jìn)行讀寫(xiě)等操作,應(yīng)首先打開(kāi)設(shè)備,完成操作后再關(guān)閉設(shè)備。設(shè)備文件的初始化主要針對(duì)PPI的/dev/ppifcd設(shè)備。本系統(tǒng)可以從4個(gè)步驟進(jìn)行。
(1)打開(kāi)視頻設(shè)備 利用open()函數(shù)實(shí)現(xiàn)打開(kāi)PPI視頻設(shè)備。
fd_ppi=open(“/dev/ppifcd”,O_RDWR)
fd_ppi為設(shè)備文件描述符。
(2)獲取設(shè)備信息 利用相應(yīng)的ioctl()函數(shù)取得設(shè)備文件的相關(guān)信息,包含設(shè)備的基本信息參數(shù)(設(shè)備名稱、支持的最大最小分辨率、信號(hào)源信息等);
ioctl(fd_ppi,CMD_PPI_GET_VIDEOIN,&video_in)
(3)獲取影像信息 利用相應(yīng)的ioctl()函數(shù)取得影像支持信息,包含設(shè)備采集圖像的各種屬性參數(shù)(色調(diào)、亮度、飽和度、對(duì)比度、色相等);
ioctl(fd_ppi,CMD_PPI_SET_0V7660,&pictures)
(4)關(guān)閉視頻設(shè)備利用close()函數(shù)關(guān)閉PPI視頻設(shè)備。
if(fd_ppi)close(fd_ppi);
2.3.2 數(shù)據(jù)格式的轉(zhuǎn)化
本系統(tǒng)開(kāi)始采集攝像頭數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)化為YUV420格式,在PC上顯示的時(shí)候采用的是RGB565格式,因此在采集完畢之后必須進(jìn)行圖像數(shù)據(jù)的格式轉(zhuǎn)換。
RGB與YUV之間可以相互轉(zhuǎn)化,對(duì)應(yīng)關(guān)系如下:
其反變化公式如下
根據(jù)上述關(guān)系可以通過(guò)編程實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)化。
2.3.3 圖像的捕捉
在PPI_ov7660中采用直接讀取的方法,直接讀取方法比較簡(jiǎn)單,通過(guò)調(diào)用read()函數(shù),將輸入的圖像數(shù)據(jù)復(fù)制到內(nèi)核緩沖區(qū)中,就可以實(shí)現(xiàn)對(duì)每幀圖像的讀取。過(guò)程如下:
(1)通過(guò)調(diào)用函數(shù)malloc()為采集的圖像數(shù)據(jù)分配內(nèi)存;
in_buff=(unsigned char*)malloc(IMG_SIZE)
(2)通過(guò)調(diào)用read()函數(shù)將前端采集的圖像數(shù)據(jù)讀到in_buf中;
Fd=read(fd_ppi,in_buff,IMG_SIZE)
(3)通過(guò)調(diào)用write()函數(shù)將內(nèi)存中的圖像數(shù)據(jù)寫(xiě)到創(chuàng)建的一個(gè)file里。
fd=fopen(“pic”,“wb”)fwrite(in_buff,l,nOutputBytes,fd)
3 圖像的網(wǎng)絡(luò)傳輸與顯示
在uClinux平臺(tái)上采用服務(wù)器/客戶端模型通過(guò)建立TCP套接字來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)的連接,本系統(tǒng)通過(guò)基于TCP協(xié)議的socket編程,完成了圖像數(shù)據(jù)的發(fā)送和客戶端的接收程序。流程圖如圖4所示。
以網(wǎng)絡(luò)上PC機(jī)為客戶端,用VC編寫(xiě)圖像顯示界面。把服務(wù)端采集的圖像傳送至接收端,如圖5所示。實(shí)驗(yàn)表明,系統(tǒng)每秒采集15幀圖像,沒(méi)有停頓感,滿足實(shí)時(shí)性要求。
本系統(tǒng)以B1ackfin533為數(shù)據(jù)處理核心,依托數(shù)字圖像處理技術(shù)和DMA技術(shù),并通過(guò)以太網(wǎng)與上位機(jī)通信進(jìn)行數(shù)據(jù)傳輸,完成了一個(gè)完整的視頻監(jiān)測(cè)系統(tǒng)。其設(shè)計(jì)特點(diǎn)為結(jié)構(gòu)簡(jiǎn)單、體積小、功耗低、圖像分辨率高、成本低廉、結(jié)合網(wǎng)絡(luò)布線。本系統(tǒng)滿足實(shí)時(shí)行要求,具有很大的應(yīng)用前景。