新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Android的MJPEG網(wǎng)絡攝像機設計

基于Android的MJPEG網(wǎng)絡攝像機設計

作者: 時間:2012-03-23 來源:網(wǎng)絡 收藏


2 系統(tǒng)軟件
2.1 軟件
搭建需要Linux系統(tǒng)環(huán)境,首先移植Bootloader,對Linux 2.6.32內(nèi)核進行裁剪,加載Linux UVC(USB video device class)驅(qū)動及相關驅(qū)動,將編譯好的Linux系統(tǒng)鏡像燒寫到ARM板Nand Flash中,對Bootloader沒置啟動引導地址,即完成軟件運行環(huán)境搭建。
分析性能需求與拓展性,須滿足下列條件:
◆視頻監(jiān)控實時性;
◆支持多客戶端同時連接;
◆圖像識別算法或預留接口;
◆功能模塊化滿足后期開發(fā)可擴展。
因此,采用多線程架構(gòu)與互斥鎖機制來保證實時性、模塊化的思想代碼結(jié)構(gòu)。軟件程序主流程如圖3所示。

本文引用地址:http://butianyuan.cn/article/149360.htm

d.JPG


其中主要實現(xiàn)如下功能。
①初始化Linux V4L2接口,必須按照V4L2標準結(jié)構(gòu)初始化結(jié)構(gòu)體,其中包括struct v412_capability cap;struct v412_format fmt;struct v412_buffer buf;struct v412_requestbuffers rb;struct v412_streamparm setfps。此外將視頻設備名、視頻寬度、視頻高度、幀率、視頻格式和抓取方法傳遞給函數(shù)init_videoIn(struct vdIn*vd,char*device,int width,intheight,int fps,int format,int grabmethod)實現(xiàn)初始化。值得注意的是眾多USB camera并不支持JPEG格式視頻流直接抓取,針對YUYV格式抓取卻有廣泛支持。后期進行圖像識別算法操作時直接分析YUYV原始圖像數(shù)據(jù),將節(jié)省JPEG壓縮數(shù)據(jù)轉(zhuǎn)換為原始圖像數(shù)據(jù)的大量運算開銷,因此采用YUYV抓取模式。
②創(chuàng)建核心圖像處理線程。在該線程內(nèi)實現(xiàn):抓取功能。
◆UVC設備單幀抓取,uvcGrab(struct vdIn*vd)函數(shù)實現(xiàn)單幀YUYV格式的原始圖像拷貝到內(nèi)存,采用高效的mmap內(nèi)存映射方法讀??;
◆JPEG核心算法實現(xiàn),JPEG壓縮算法占用大量CPU時間,下一小節(jié)將詳細討論。
③創(chuàng)建套接字接口。為實現(xiàn)多用戶同時連接攝像機,必須采用socket服務線程,每當有新用戶連接同時產(chǎn)生一個新線程與之對應,實現(xiàn)多用戶端同步監(jiān)控。
④搭建Web瀏覽器訪問方式的Web主頁。嵌入式設備資源有限,輕量級的Web Server主要有:Boa、Httpd、Thttpd等。本設計選用開源的Boa、交叉編譯Boa源碼配置boa.conf文件,配置系統(tǒng)etc自啟動shell加入Boa程序,將編寫HTML頁面文件放入系統(tǒng)中對應的www目錄后即可正常工作。
2.2 壓縮算法研究與實現(xiàn)
(Motion Joint Photographic Experts Group)視頻編碼格式,把運動的視頻序列作為連續(xù)的靜止圖像來處理,這種壓縮方式單獨完整地壓縮每一幀,編輯過程中可隨機存儲每一幀,可進行精確到幀的編輯。單幀壓縮算法為JPEG(Joint Photographic Experts Group)。人眼視覺生理特性決定眼睛對構(gòu)成圖像的不同頻率成分具有不同的敏感度。JPEG壓縮是有損壓縮,但損失的部分是人類視覺不容易察覺到的部分,利用眼睛對色彩域中的高頻信息部分不敏感的特點,節(jié)省大量需要處理的數(shù)據(jù)信息。一幀原始圖像數(shù)據(jù)對其進行JPEG算法編碼過程分兩大部分:
①空間冗余度,去除視覺上的多余信息;
②結(jié)構(gòu)(靜態(tài))冗余度,去除數(shù)據(jù)本身的多余信息。
JPEG編碼中主要涉及包括:DCT、zigzag編碼、量化、RLE編碼、范式Huffman編碼、DC(直流分量)的編碼。JPEG編碼流程如圖4所示。

e.JPG



評論


相關推薦

技術專區(qū)

關閉