1 引言
隨著計(jì)算機(jī)技術(shù)及網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,視頻監(jiān)控系統(tǒng)的發(fā)展趨勢(shì)必然是全面數(shù)字化、網(wǎng)絡(luò)化,即采用嵌入式網(wǎng)絡(luò)攝像機(jī),利用網(wǎng)絡(luò)進(jìn)行傳輸,并充分利用大規(guī)模集成電路和網(wǎng)絡(luò)的科技成果,及體積小巧、性能穩(wěn)定、通訊便利等特點(diǎn),將使監(jiān)控?zé)o處不在成為現(xiàn)實(shí)。而目前,我國(guó)基于嵌入式技術(shù)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)剛剛起步,所以研究并開(kāi)發(fā)一種基于嵌入式系統(tǒng)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)具有很大的工程實(shí)際意義。
本文針對(duì)網(wǎng)絡(luò)視頻監(jiān)控設(shè)備的實(shí)際應(yīng)用需求,有機(jī)的結(jié)合圖像采集和嵌入式系統(tǒng)兩方面的新技術(shù),設(shè)計(jì)了基于ARM 32位單片機(jī)系統(tǒng)和圖像采集存儲(chǔ)系統(tǒng)的嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備,并實(shí)現(xiàn)了視頻數(shù)據(jù)的采集、壓縮與網(wǎng)絡(luò)傳輸。
2 ARM與嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備
32位嵌入式處理器中有MIPS、ARM、M-CORE等等。ARM(Advanced RISC Machines)處理器本身是32位系統(tǒng),其內(nèi)核具有性能高、成本低和能耗省的特點(diǎn)。
支持ARM的嵌入式操作系統(tǒng)主要有:Windows CE、Vxworks、uClinux等[1]。uClinux是“Micro-Control-Linux”縮寫,意即“針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)”[2]主要是面對(duì)沒(méi)有MMU并且資源很少的嵌入式系統(tǒng)。高性能、高集成度將是嵌入式系統(tǒng)的發(fā)展方向[4]。“嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備”是第三代數(shù)字監(jiān)控設(shè)備,系統(tǒng)結(jié)構(gòu)如圖1。
嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備體積小巧,具有圖像采集、圖像處理功能,帶有以太網(wǎng)接口,TCP/IP協(xié)議棧,性能比較穩(wěn)定,可直接與Internet互連,系統(tǒng)的擴(kuò)展性很好,監(jiān)控區(qū)域幾乎無(wú)限,并且由于設(shè)備傳輸?shù)骄W(wǎng)絡(luò)上是數(shù)字化視頻信號(hào),可直接利用軟硬件進(jìn)行處理。同時(shí)因?yàn)樵O(shè)備本身帶有操作系統(tǒng),因此可以方便的進(jìn)行后續(xù)開(kāi)發(fā),增加用戶所需功能,提高設(shè)備的智能程度。
3 嵌入式監(jiān)控系統(tǒng)硬件模塊的設(shè)計(jì)
3.1系統(tǒng)總體設(shè)計(jì)
硬件系統(tǒng)可以分為三個(gè)模塊:ARM集成開(kāi)發(fā)模塊、圖像采集模塊、圖像存儲(chǔ)控制模塊。其中ARM集成開(kāi)發(fā)模塊模塊的CPU采用三星的S3C4510B;圖像采集模塊中的CMOS圖像采集芯片采用Ommvision公司的OV7620,鏡頭采用桑來(lái)斯公司生產(chǎn)的DSL103鏡頭;圖像存儲(chǔ)模塊主要包括74LS244(八進(jìn)制3狀態(tài)線緩沖器),4040(12位二進(jìn)制串行計(jì)數(shù)器),512K 的SRAM CY7C1049。功能原理框圖如圖2所示:
系統(tǒng)工作過(guò)程可分為主要兩個(gè)步驟:圖像數(shù)據(jù)存儲(chǔ)和圖像數(shù)據(jù)讀出過(guò)程。系統(tǒng)上電之后,單片機(jī)將通過(guò)I2C總線對(duì)CMOS圖像傳感器的工作寄存器進(jìn)行初始化設(shè)置,以便使圖像傳感器進(jìn)入正常的工作狀態(tài),如開(kāi)窗口位置、逐行掃描方式、自動(dòng)曝光、自動(dòng)平衡等。如果上位機(jī)需要調(diào)整CMOS圖像傳感器的工作參數(shù),則可以通過(guò)地址端口寫入;隨后,CMOS圖像傳感器輸出的8位圖像數(shù)據(jù)在邏輯控制電路的協(xié)調(diào)控制下,順序存入靜態(tài)RAM構(gòu)成的圖像數(shù)據(jù)緩沖器。如果上位機(jī)沒(méi)有發(fā)出讀數(shù)據(jù)的命令,則此過(guò)程一直進(jìn)行下去,新的圖像數(shù)據(jù)不斷地覆蓋原有的數(shù)據(jù);如果上位機(jī)發(fā)出讀取圖像數(shù)據(jù)的命令,則等待一幀完整的圖像寫入后,單片機(jī)將CMOS圖像傳感器的圖像輸出通道關(guān)閉,然后將SRAM中的數(shù)據(jù)順序從IO讀入。讀完一幀圖像后,再將CMOS圖像傳感器的圖像輸出通道打開(kāi)重新開(kāi)始新的一幀圖像的采集。
3.2 ARM集成開(kāi)發(fā)模塊模塊的設(shè)計(jì)
系統(tǒng)硬件結(jié)構(gòu)框圖如下:
本系統(tǒng)CPU S3C4510B是基于以太網(wǎng)應(yīng)用系統(tǒng)的高性價(jià)比16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32位ARM7TDMI RISC處理器,ARM7TDMI為低功耗高性能的16/32位核。該CPU最適合用于對(duì)價(jià)格及功耗敏感的應(yīng)用場(chǎng)合[3]。
系統(tǒng)中采用的Flash存儲(chǔ)器MBM29F016在本系統(tǒng)中用來(lái)存放uClinux操作系統(tǒng)程序代碼。SDRAM是高速的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,在系統(tǒng)中主要用作程序的運(yùn)行空間、數(shù)據(jù)及堆棧區(qū)。RTL8201是一種全雙工以太網(wǎng)控制器,當(dāng)系統(tǒng)中主處理器要向網(wǎng)上發(fā)送數(shù)據(jù)時(shí),先將一幀數(shù)據(jù)通過(guò)遠(yuǎn)程DMA通道送到RTL8201中的發(fā)送緩存區(qū),然后發(fā)出傳送數(shù)據(jù)命令。RTL8201在完成了上一幀的發(fā)送后,再完成此幀的發(fā)送。RTL8201接收到的數(shù)據(jù)通過(guò)MAC比較,CRC校驗(yàn)后,由FIFO存到接收緩沖區(qū),收滿一幀后,以中斷的方式通知主處理器。
3.3 OV7620攝像頭模塊電路設(shè)計(jì)
由于OV7620集成度高,外圍電路設(shè)計(jì)非常簡(jiǎn)單,僅由石英晶體和一些電阻、電容等元件組成。
3.4圖像存儲(chǔ)模塊的硬件設(shè)計(jì)
圖像存儲(chǔ)模塊采用兩個(gè)計(jì)數(shù)器4040作為RAM的地址信號(hào),分別采集和讀取利用PCLK或ARM的IO脈沖信號(hào)作為計(jì)數(shù)器的時(shí)鐘信號(hào)。本模塊利用MAX+plusⅡ 軟件仿真了硬件時(shí)序,分析組合邏輯電路及時(shí)序邏輯電路,驗(yàn)證了數(shù)字系統(tǒng)設(shè)計(jì)的準(zhǔn)確性。
4嵌入式系統(tǒng)控制軟件的設(shè)計(jì)與實(shí)現(xiàn)
4.1系統(tǒng)控制流程
系統(tǒng)軟件模塊主要在嵌入式操作系統(tǒng)uClinux下用C語(yǔ)言實(shí)現(xiàn)。其主要作用在于控制硬件設(shè)備,完成預(yù)定的圖像采集、壓縮、傳輸功能。按控制時(shí)序方向依次為I2C驅(qū)動(dòng)程序、圖像數(shù)據(jù)采集程序、圖像壓縮程序、網(wǎng)絡(luò)傳輸程序四部分組成。系統(tǒng)控制流程圖5如下:
如上圖所示,當(dāng)將要采集圖像數(shù)據(jù)時(shí),嵌入式系統(tǒng)通過(guò)I2C驅(qū)動(dòng)程序設(shè)置OV7620內(nèi)部寄存器的值,配置合適的圖像格式。當(dāng)一幀圖像完全存儲(chǔ)到SRAM后,啟動(dòng)圖像采集程序,將SRAM中的數(shù)據(jù)讀取到嵌入式系統(tǒng)內(nèi)存中,并進(jìn)行壓縮,最后打包發(fā)送到網(wǎng)絡(luò)上。
4.2 I2C驅(qū)動(dòng)程序的原理與實(shí)現(xiàn)
系統(tǒng)上電之后,單片機(jī)將通過(guò)I2C總線對(duì)CMOS圖像傳感器的工作寄存器進(jìn)行初始化設(shè)置,以便使圖像傳感器進(jìn)入正常的工作狀態(tài),如開(kāi)窗口位置、逐行掃描方式、自動(dòng)曝光、自動(dòng)白平衡等。如果上位機(jī)需要調(diào)整CMOS圖像傳感器的工作參數(shù),則可以通過(guò)地址端口寫入,雖然S3C4510B提供了I2C BUS。但是目前市面上的uClinux則沒(méi)有針對(duì)S3C4510B的I2C BUS的驅(qū)動(dòng)。
uClinux下I2C驅(qū)動(dòng)程序主要數(shù)據(jù)結(jié)構(gòu)及函數(shù)描述如下:
#define DEVICE_NAME "i2c" /* 定義設(shè)備的名稱 */
#define I2C_MAJOR 89 /* 定義主設(shè)備號(hào) */
static volatile U8 priv_buf[128];
static struct semaphore i2c_samsung_sem;
static struct file_operations i2c_ops ;
/* IIC 參數(shù)設(shè)置 */
typedef struct
{ int i2c_speed;
U8 i2c_slave;
U8 i2c_addrlen;
U8 i2c_operate;
int i2c_pagesize;
spinlock_t lock;
U8 *buf;
} I2C_PRIVATE_T;
int __init i2c_samsung_init( void );/* 初始化函數(shù) */
static ssize_t i2c_read (struct file * file ,char * buf, size_t count, loff_t * f_ops); /* 讀數(shù)據(jù)函數(shù) */
static ssize_t i2c_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops);
/* 寫數(shù)據(jù)函數(shù) */
static ssize_t i2c_ioctl (struct inode * inode ,struct file * file,
unsigned int cmd, U32 data); /* 控制函數(shù) */
static ssize_t i2c_open (struct inode * inode ,struct file * file);
/* 打開(kāi)設(shè)備函數(shù) */
static ssize_t i2c_release(struct inode * inode ,struct file * file);
/* 釋放設(shè)備函數(shù) */
static void s3c4510_i2c(int irq, void *dev_id, struct pt_regs *regs);
/* i2C 中斷句柄函數(shù) */
int init_module(void) /* 安裝驅(qū)動(dòng)程序模塊函數(shù) */
void cleanup_module( void ) /*卸載驅(qū)動(dòng)程序模塊函數(shù) */
同時(shí)通過(guò)在uClinux操作系統(tǒng)下編制調(diào)試IO數(shù)據(jù)讀取控制程序、圖像壓縮程序、網(wǎng)絡(luò)通信程序后,I2C驅(qū)動(dòng)可以方便的修改OV7620寄存器數(shù)據(jù),CPU可以通過(guò)IO高速的把數(shù)據(jù)讀到內(nèi)存,圖像壓縮后體積明顯減小,通過(guò)網(wǎng)絡(luò)可以流暢的把圖像數(shù)據(jù)發(fā)送到客戶端。其中也有一些不足之處比如I2C驅(qū)動(dòng)有時(shí)會(huì)由于干擾不能成功的修改OV7620的寄存器,還有待深入分析修改。
4.4 圖像的合成與處理
圖像的合成主要根據(jù)位圖文件的的數(shù)據(jù)結(jié)構(gòu)、顏色空間模型概念,并結(jié)合彩色圖像合成原理對(duì)圖像進(jìn)行合成。
由于采集圖像時(shí),不僅要受鏡頭的光學(xué)系統(tǒng)、照明的光強(qiáng)分布等因素影響,還要考慮CMOS圖像傳感器的分辨率等。因而采集的圖像經(jīng)常具有噪聲和不明因素的干擾,為了能更好地進(jìn)行圖像處理分析,可利用圖像的預(yù)處理,根據(jù)得到的實(shí)際圖像的信息進(jìn)行修復(fù)。
消除圖像噪聲的方法在圖像處理中稱為圖像平滑處理。圖像平滑處理主要有移動(dòng)平均法和中值濾波法兩種。在移動(dòng)平均法中,把噪聲成分也放到了平均計(jì)算之中,因此其輸出也受到噪聲的影響。而在中值濾波中,噪聲成分很難被選到,對(duì)輸出圖像不會(huì)有什么影響。因此,對(duì)同一塊圖像進(jìn)行比較,中值濾波法在去除噪聲的能力上略勝一籌。本設(shè)備中利用中值濾波的程序?qū)崿F(xiàn)了算法,測(cè)試結(jié)果表明圖像上的斑點(diǎn)基本被消除,處理后的圖像很清晰。
5 結(jié)束語(yǔ)
基于嵌入式系統(tǒng)的網(wǎng)絡(luò)視頻監(jiān)控設(shè)備通過(guò)構(gòu)筑一個(gè)基于S3C4510B和uClinux的嵌入式平臺(tái),可便利的通過(guò)Internet與外界通信,較好的實(shí)現(xiàn)了視頻數(shù)據(jù)的采集、壓縮與網(wǎng)絡(luò)傳輸,達(dá)到實(shí)時(shí)監(jiān)控的目的。經(jīng)過(guò)壓縮編碼后圖像數(shù)據(jù)體積有了明顯的減小,圖像數(shù)據(jù)可以存儲(chǔ)到數(shù)據(jù)庫(kù)中,為數(shù)據(jù)的分析帶來(lái)很大的便利。我們深信,這樣一種基于嵌入式系統(tǒng)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)具有很大的工程實(shí)際意義。