基于PXA255和JPEG壓縮算法的嵌入式視頻監視系統

在視頻采集與處理模塊中,首先要按照要求在linux2.4.19內核中加入V4L (video for linux) 的支持項,然后在usb總線(xiàn)驅動(dòng)中就會(huì )出現一些camera的選項,里面就有ov511(支持網(wǎng)眼3000)和stv680(支持MDC-30L數碼相機)的驅動(dòng)支持。
V4L定義了在linux下進(jìn)行圖像采集的接口函數。主要有設備的open、close、read、write、ioctrl、mmap等對設備的操作方法,并通過(guò)結構體video_device_ stv680_template在內核中進(jìn)行登記,方便在用戶(hù)狀態(tài)下進(jìn)行設備的各種操作??梢砸蕴摂M內存映射方式獲取圖像數據,主要是調用mmap內存映射函數stv680_mmap,其定義如下:
static int stv680_mmap (struct video_device *dev, const char *adr, unsigned long size)
在該函數中,利用系統調用remap_page_range,將物理地址pos對應的虛擬頁(yè)面地址page映射到用戶(hù)空間中去,從而實(shí)現了圖像數據從驅動(dòng)到應用程序的轉移。對硬件底層的操作,集中在stv680_ioctl函數中,通過(guò)系統調用ioctrl對設備進(jìn)行控制,其中包括:VIDIOCGCAP、VIDIOCSYNC等控制方式,對攝像頭進(jìn)行配置、同步等操作。這些控制方式都符合V4L的控制規范,可以將一般的圖像采集程序不經(jīng)過(guò)改動(dòng)移植到這個(gè)驅動(dòng)上來(lái)。
對采集上來(lái)的每一幀圖像數據我們采用JPEG壓縮。在實(shí)際應用中,JPEG壓縮使用Arm_linux下的libjpeg庫模塊,該模塊采用以離散余弦變換(Discrete Cosine Transform,DCT)為基礎的有損壓縮算法,在壓縮比為25:1的情況下,壓縮后還原得到的圖像與原始圖像相比較,非圖像專(zhuān)家難于找出它們之間的區別。經(jīng)過(guò)交叉編譯后,將編譯生成的庫文件libjpeg.so拷貝到了sitsang板的文件系統中,從而使sitsang板支持jpeg壓縮格式的圖形。代碼實(shí)現部分的主要流程如下:
設置壓縮信息結構體struct jpeg_compress_struct cjpeg,其中保存著(zhù)圖像原始信息和壓縮信息。其中圖像大小320x240,深度為3,顏色類(lèi)型為RGB.
設置圖像壓縮品質(zhì):jpeg_set_defaults(cjpeg) jpeg_set_quality(cjpeg, quality, TRUE);
設置圖像壓縮方法:cjpeg.dct_method = JDCT_FASTEST(使用快速離散dct變換)
開(kāi)始壓縮:
jpeg_start_compress(cjpeg, TRUE);
……
jpeg_write_scanlines(cjpeg, row_ptr, 1);
……
完成壓縮:jpeg_finish_compress(cjpeg); jpeg_destroy_compress(cjpeg)
在圖像的處理上,本文設計了簡(jiǎn)單并且行之有效的圖像比較判斷程序,來(lái)判斷圖像是否發(fā)生變化,并且只有當圖像發(fā)生變換以后,系統才會(huì )自動(dòng)將現場(chǎng)情況上報給監控主機。比較函數cmp_blks設定一個(gè)圖像發(fā)生變化的極限c_limit,然后將一幀圖像分割成12*12個(gè)圖像塊(block),對每一個(gè)block,將像素之差與c_limit進(jìn)行比較,如果大于c_limit,則認為該塊圖像發(fā)生了變化,否則沒(méi)有變化。在野外無(wú)人值守的監控環(huán)境中,根據實(shí)驗和經(jīng)驗進(jìn)行設定c_limit的值,能夠合理的利用網(wǎng)絡(luò )帶寬進(jìn)行傳輸并減少系統負擔。經(jīng)過(guò)概算法確定的視頻變化塊信息可以用于以后圖像跟蹤的擴展功能。
3 系統的測試與結論
通過(guò)現場(chǎng)安裝測試,每個(gè)監視終端可以同時(shí)支持4臺視頻采集終端的連接與數據傳輸,服務(wù)器可以同時(shí)支持多達100臺視頻采集終端的數據轉發(fā),長(cháng)時(shí)間運行效果很好。經(jīng)過(guò)圖像預處理、判斷和壓縮后,傳輸的數據量小,節省了網(wǎng)絡(luò )傳輸帶寬,適合無(wú)線(xiàn)網(wǎng)絡(luò )傳輸。
評論