<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設計應用 > 基于ARM平臺的遠程視頻監(jiān)控系統(tǒng)的研究

          基于ARM平臺的遠程視頻監(jiān)控系統(tǒng)的研究

          ——
          作者: 時間:2007-08-29 來源:微計算機信息 收藏

          摘要 介紹了一種基于S3C2440[1]硬件平臺和Linux操作系統(tǒng)[2]的遠程視頻監(jiān)控系統(tǒng)的總體設計方案,詳細闡述了系統(tǒng)的總體結構和各部分功能特點,對系統(tǒng)視頻采集,MPEG-4壓縮的實現進行了詳細分析,并給出關鍵功能的軟件實現方法,與傳統(tǒng)的視頻監(jiān)控系統(tǒng)比較,該方案具有體積小,成本低,穩(wěn)定可靠等優(yōu)點。
          關鍵詞 視頻采集;MPEG-4編碼;Linux;驅動程序

          引言

              視頻監(jiān)控系統(tǒng)是安全防范系統(tǒng)的組成部分,它是一種防范能力較強的綜合系統(tǒng)?,F今監(jiān)控系統(tǒng)已經步入了數字化、網絡化時代,即視頻從前端圖像采集設備輸出時即為數字信號,并以網絡為傳輸媒介,基于TCP/IP協(xié)議,采用流媒體技術實現視頻在網上的多路復用傳輸。使用系統(tǒng)實現遠程視頻監(jiān)控技術,符合網絡化數字化的特點,對公安、安防等行業(yè)有著重要的現實意義。

              視頻監(jiān)控系統(tǒng)一般采用基于PC機平臺+視頻采集卡的形式,該方案系統(tǒng)體積大、成本高,在遠距離、多點系統(tǒng)中實現困難。本設計采用三星公司的S3C2440[1]硬件平臺(CPU芯片含有視頻采集接口),軟件平臺是Linux-2.4.20操作系統(tǒng)內核,由于Linux操作系統(tǒng)的開放特性、優(yōu)良的網絡支持性能、模塊化的結構,較好滿足系統(tǒng)的需要。

          1.系統(tǒng)硬件設計

              系統(tǒng)主要由視頻采集和傳輸部分組成。有嵌入式處理器、CMOS圖像傳感器、存儲器、以太網接口、串口、及電源管理電路。嵌入式處理器是韓國三星公司的基于ARM920T內核的16/32 位RISC嵌入式微處理器(型號:S3C2440),主要面向高性價比、低功耗的應用。為了處理圖像數據,CPU的工作頻率可達400MHz。S3C2440的資源包括LCD控制器,SDRAM控制器,攝像頭接口,3路串行接口,IIC BUS接口,USB接口,觸摸屏接口。在處理器豐富資源的基礎上,還進行了相關的擴展,配置了32M Flash ROM和256MB SDRAM。在嵌入式處理器的控制下,CMOS圖像傳感器(片上)采集到的數據經幀同步信號觸發(fā)產生中斷后被拷貝到SDRAM,經過MPEG-4編碼后由網口發(fā)送到遠端監(jiān)控中心顯示,系統(tǒng)框圖如圖一所示。

          1.1視頻采集模塊的設計

               圖像傳感器接口電路是硬件設計的關鍵部分,如何有效的采集數據也是系統(tǒng)的關鍵問題。視頻采集模塊采用OV9640圖像傳感器[3],它是一款高集成度、高分辨率(1280*960)的CMOS傳感芯片,內部集成了時序電路,模擬信號處理電路,數字信號處理電路。該芯片支持RGB(4:2:2),YUV(4:2:2),YCrCb(4:2:2)數據輸出格式,內置138個設備控制寄存器,地址分

              別從0x00到0x8A,通過SCCB(Serial Camera Control Bus)接口可以方便的設置傳感器視窗大小、增益、白平衡校正、曝光控制、飽和度、色調等。由于S3C2440芯片有一個專用的視頻接口,所以CPU可以直接和CMOS圖像傳感器連接。圖像傳感器輸出的數據及控制信號包括像素時鐘(PCLK)、水平參考(HREF)、幀同步(VSYNC)和數據總線(D0-D7),分別和主處理器的相應信號相連。PCLK與HREF在處理器內部相與后產生有效的像素時鐘信號,在有效時鐘信號的上升沿或下降沿將數據鎖定[4]。模塊和S3C2440接口電路如圖二所示。在OV9640圖像傳感器中,如果輸出YUV格式[5],要用到數據線的Y2-Y9;如果輸出RGB格式,則要用數據線Y0-Y9。本設計中采用了YUV格式。

          圖二 視頻采集模塊接口

          1.2網絡接口的設計

              在S3C2440芯片上無網絡接口,為了實現在系統(tǒng)調試時,下載操作系統(tǒng)內核、文件系統(tǒng)映像,及在系統(tǒng)運行中實現視頻數據的網絡傳輸等功能,所以在系統(tǒng)中擴展網絡接口模塊(DM90000)。該芯片為10M/100M以太網物理層芯片,具有通用的處理器接口。模塊與2440接口如圖三所示:其中CMD為命令類型引腳,在高電平時為數據周期,在低電平時為地址周期??赏ㄟ^CMD與數據總線訪問內部54個控制及狀態(tài)寄存器。當AS9-AS8設置成高,SA7設置成低,SA6-4與TXD2-0匹配時,DM90000由AEN引腳唯一控制是否被選中。此外,DM9000工作在正常模式,TEST1-4依次為1、1、0、0。為了保證DM90000收發(fā)正常,還要加上25M的晶振。

          2.系統(tǒng)的軟件設計

              軟件平臺由三部分組成:系統(tǒng)引導加載程序、嵌入式Linux內核、文件系統(tǒng)及應用程序。本設計中通過向ARM平臺移植u-boot-1.1.1實現系統(tǒng)的引導加載,uboot除了正常的引導嵌入式Linux外,還可以方便的切換到下載更新模式,利用TFTP功能對內核映像及文件系統(tǒng)實時更新。嵌入式操作系統(tǒng)采用Linux2.4.20,開發(fā)模式采用最為普遍的宿主開發(fā)模式,即在宿主機上編譯內核及應用程序然后通過網口下載到目標平臺上運行,通過打印終端打印調試信息。文件系統(tǒng)是軟件平臺占用存儲量最大的一部分,它存儲了系統(tǒng)配置文件、系統(tǒng)程序和系統(tǒng)外設驅動程序。嵌入式Linux內核移植[2]好后,主要工作就變成在操作系統(tǒng)下編寫驅動程序。在這里我們著重介紹OV9640的驅動程序的開發(fā)及MPEG-4編碼的實現。

          圖三:以太網模塊接口

          2.1 OV9640驅動的開發(fā)[6]

              在Linux下編寫OV9640 CMOS圖像傳感器驅動,首先要初使化OV9640。通過SCCB總線設置OV9640的工作模式,各種參數,分配連續(xù)內存空間,容量與采集圖像的點陣數相匹配。然后用request_irq()函數為OV9640登記中斷,其中斷號為06。當S3C2440捕捉到VSYNC信號時觸發(fā)中斷,把一幀圖像數據拷貝到用戶空間。如此反復,視頻數據源源不斷的被采集到SDRAM。軟件流程如圖四所示。

                                 圖四 讀取OV9640數據流程

           

              我們知道,用戶進程是通過設備文件同硬件打交道,對設備文件的操作就是一些系統(tǒng)調用。要想把系統(tǒng)調用和設備驅動程序關聯起來,必須用到一個非常關鍵的數據結構:struct file_operations{ }。因此編寫設備驅動的主要工作就是編寫數據結構中定義的子函數,并填充file_operations的各個域。

              攝像頭file_operations的數據結構如下

          static struct file_operations cam_fops =

          {  owner  :  THIS_MODULE,

              open   :  cam_open,

              read   :  cam_read,

              ioctl  :  cam_ioctl,

              release : cam_release,

          };

              編寫好成員函數后,接下來編寫module_init()和module_exit()。module_init()是驅動程序的入口,當用insmod命令加載模塊時自動運行。此函數中包括①初使化CMOS圖像傳感器②分配連續(xù)內存地址空間③注冊設備文件④登記中斷。module_exit()函數在rmmod卸載模塊時調用。函數功能包括①釋放內存空間②釋放中斷③注銷設備文件。

              至此,驅動模塊編寫好了,編譯加載后,我們就可以像操作普通文件一樣對攝像頭進行讀取數據了

          2.2基于MPEG4的數據壓縮算法的實現

          2.2.1 MPEG-4[7]壓縮標準

              數字視頻流的數據量是巨大的,以QVGA圖像,每秒20幀為例,每秒鐘的數據量為2.92M,假設系統(tǒng)有十路傳感器,如果不經過壓縮,實現數據在網上的多路復用傳輸是相當困難的,為了系統(tǒng)可靠的運行,本設計采用高壓縮率的MPEG-4視頻壓縮編碼。MPEG-4最顯著的特點是基于內容的編碼方法,即把一段視頻序列看成有不同的視頻對象VO組成,編碼器根據實際情況對各個視頻對象面VOP進行編碼,其最大壓縮率可達到100:1。

          2.2.2 MPEG-4的實現與優(yōu)化

              XVID是一種開源的MPEG-4視頻編碼軟件,是目前所有開源視頻編碼軟件中比較優(yōu)秀的一個,它嚴格按照GPL發(fā)布,圖像質量可以達到DVD的效果,而數據量只有DVD的1/8。XVID最新的版本為xvidcore1.1.0,這里我們選擇xvidcore1.1.0作為進一步優(yōu)化的基礎。從 www.xvidcore.org 下載xvidcore1.1.0源碼,修改MAKEFILE文件,把XVID移植到ARM平臺。具體的實現方法可參照example下的例子,結合項目的實際,寫出自己的應用程序。然后進入xvidcore-1.1.0/build/generic目錄,執(zhí)行./configure –disable –assembly命令,手工配置platform.inc文件,修改CC=/opt/host/armv41/bin/arm4l-unknown-linux-gcc,再執(zhí)行make clean,make。最后把生成的庫拷貝到example目錄下,修改example下的Makefile文件,編譯下載到目標板上運行即可。

              經過測試,XVID的壓縮比是很高的,可達到20:1,最重要的是編碼速度快,壓縮解壓后的圖像質量稍有降低,完全可以達到實用的要求。

          3.結束語

          利用實現遠程視頻監(jiān)控符合數字化、網絡化的發(fā)展趨勢,具有布線集中,設備簡單,體積小,成本低等特點,與傳統(tǒng)的視頻監(jiān)控方案比較有不可比擬的優(yōu)越性。前端采集部分采用S3C2440微處理器,利用其自身提供的視頻接口,圖像采集的速度完全可以達到動態(tài)顯示的要求(在400M的時鐘頻率下,QVGA圖像可以達到20幀/秒的顯示速率)。本文作者的創(chuàng)新點:采用圖像壓縮編碼和網絡技術,可實現視頻數據的多路復用傳輸。監(jiān)控端采用基于MPEG-4的視頻對象分割方法,利用相鄰幀視頻對象的差異,實現智能報警的功能。該系統(tǒng)性價比較高,使用方便,值得推廣使用。

          4.參考文獻

          [1]S3C2440X RISC MICROPROCESSOR date sheet.samsung electronics.2003

          [2]張積紅,吳強.嵌入式linux研究及其在ARM上的移植.電腦知識與技術,2005,(8)

          [3]OV9640 version1.0.Omnivision Technologies.2003

          [4]王曉明,一種MPEG-4視頻采集與傳輸系統(tǒng)的研究與實現,計算機測量與控制,2005,(8)

          [5]陳福,馬莉等.基于嵌入式系統(tǒng)的視頻圖像捕獲研究與實現.微計算機信息,2005,(12)

          [6]李駒光,鄭耿.基于嵌入式linux的設備驅動程序開發(fā)(二).電腦編程技巧與維護,2005,(12)

          [7]ISO/IEC JTC1/SC29/WG11 Document N4668,Overview of the MPEG-4 Standard.March 2002

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


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();