新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Android的MJPEG網絡攝像機設計

        基于Android的MJPEG網絡攝像機設計

        作者: 時間:2012-03-23 來源:網絡 收藏


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

        本文引用地址:http://www.104case.com/article/149360.htm

        d.JPG


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

        e.JPG



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 页游| 淳安县| 富阳市| 铁岭市| 平泉县| 剑川县| 承德市| 吉木乃县| 平罗县| 彝良县| 渝北区| 新巴尔虎右旗| 绵阳市| 大厂| 望江县| 广丰县| 莱西市| 高州市| 纳雍县| 广安市| 乐亭县| 积石山| 康马县| 高州市| 龙江县| 清徐县| 十堰市| 江山市| 新竹县| 渭南市| 惠州市| 西丰县| 嘉禾县| 米脂县| 抚远县| 罗源县| 临高县| 黔东| 济阳县| 十堰市| 潜江市|