• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PXA255和JPEG壓縮算法的嵌入式視頻監視系統

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

    作者: 時間:2009-05-21 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/152478.htm

    圖2 框圖


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

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 长兴县| 渝北区| 丹棱县| 渭南市| 镶黄旗| 开阳县| 枞阳县| 林州市| 石嘴山市| 卓尼县| 明水县| 武夷山市| 彩票| 乌拉特前旗| 神木县| 安岳县| 新化县| 探索| 惠州市| 清苑县| 砚山县| 霍州市| 宁强县| 清徐县| 深圳市| 东源县| 武定县| 富顺县| 阿拉善左旗| 太仓市| 赤水市| 兴业县| 鹤峰县| 张家港市| 渭源县| 宜川县| 罗甸县| 浦江县| 白河县| 开鲁县| 中超|