基于V4L2和web的圖像監(jiān)控系統(tǒng)_第1頁
基于V4L2和web的圖像監(jiān)控系統(tǒng)_第2頁
基于V4L2和web的圖像監(jiān)控系統(tǒng)_第3頁
基于V4L2和web的圖像監(jiān)控系統(tǒng)_第4頁
基于V4L2和web的圖像監(jiān)控系統(tǒng)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于V4L2和web的圖像監(jiān)控系統(tǒng)摘要:在本文中,我們基于V4L2架構(gòu)和Web為遠程監(jiān)控設(shè)計了一個嵌入式圖像獲取系統(tǒng)。為了完成YUV數(shù)據(jù)獲取、圖像壓縮和發(fā)送,攝像頭、V4L2接口技術(shù)、libjpeg和ftplib等一些開源的庫程序都被相互協(xié)調(diào)的組織在一起工作。并且我們在這個嵌入式系統(tǒng)中移植了boa嵌入式web服務器,這使得用戶能夠通過web瀏覽器訪問和管理圖像監(jiān)控系統(tǒng)。系統(tǒng)中的硬件開發(fā)平臺采用三星公司的S3C2440芯片,Linux系統(tǒng)作為軟件開發(fā)平臺。本系統(tǒng)具有低成本、易于使用和強大的擴展等優(yōu)點。關(guān)鍵字:V4L2;圖像壓縮;嵌入式系統(tǒng);Web1、介紹物聯(lián)網(wǎng)(IOT)技術(shù)是未來發(fā)展趨勢,它融合

2、了網(wǎng)絡(luò)和嵌入式系統(tǒng)開發(fā)的優(yōu)點。最近這些年,商務計算機,平板電腦,大型主機正在發(fā)展。同時M2M通信技術(shù),熱插拔技術(shù),空間定位技術(shù),IPv6等技術(shù)正在逐漸的被廣泛使用。此外,分布式控制,柔性制造,信息家電以及嵌入式系統(tǒng)的需求大大增強。隨著網(wǎng)絡(luò)的高速發(fā)展,多媒體通信技術(shù),嵌入式系統(tǒng)也被廣泛地使用在各個領(lǐng)域。高帶寬網(wǎng)絡(luò)和高速處理器使得確保生活和工作安全和監(jiān)聽實時情況查看的監(jiān)控系統(tǒng)變得盡可能方便,實現(xiàn)也非常容易。不過有時候它也不需要獲取實時和連續(xù)的媒體。在一些特殊的領(lǐng)域,研究員更愿意將一系列靜止的圖像變成移動的視頻。比如觀察農(nóng)作物的生長情況等。所以這個嵌入式圖像監(jiān)控系統(tǒng)(IMES)能夠用于在植物學領(lǐng)域監(jiān)

3、控植物的生長,或者地質(zhì)學風景變化,氣象學中氣候的變化等。這些由監(jiān)控系統(tǒng)收集起來的圖像可以定期地捐獻給它們的研究者。用戶無論什么時候在哪里也能夠通過WEB服務器監(jiān)控他們關(guān)系的一切事情。在當今生活中,Linux和ARM變得越來越有用,人們已經(jīng)不能將它們和電子產(chǎn)品分開了。Linux系統(tǒng)最突出的特點之一就是免費并且其所有源代碼完全開放:最新的源碼都可以被使用、修改和分享。可以說Linux統(tǒng)治了整個嵌入式系統(tǒng)。在諸多CPU架構(gòu)中,ARM是最廣泛的并且使用32位指令集架構(gòu)。相對簡單ARM處理器使得他們更適合低功耗的應用。更多地,ARM-linux也被廣泛應用于消費電子產(chǎn)品,包括個人數(shù)字助理(PDA)、數(shù)字

4、多媒體、音樂播放器和計算機外設(shè)。此外,有許許多多的基于Linux的開源軟件,這使得設(shè)計者在開發(fā)產(chǎn)品的時候可以有很大的選擇空間并且節(jié)約許多資金。程序員也可按照某特殊應用裁剪系統(tǒng),或者向系統(tǒng)中添加一些實用的功能。在IMES中采用了開源的庫程序libjpeg和ftplib。前者用于壓縮圖片,后者用于圖片數(shù)據(jù)的發(fā)送。當涉及到基于Linux的圖像捕獲時, V4L2(video for Linux 2)是最基本的標準的視頻驅(qū)動框架。所有的視頻設(shè)備幾乎都支持V4L2,比如攝像頭數(shù)字或者模擬電視等。所以V4L2是本系統(tǒng)的基礎(chǔ)。另外,web是運行在因特爾網(wǎng)上的服務,并且其很容易在各種不同的系統(tǒng)上操作,并且對訪問

5、者提供了方便同時沒有任何限制。Boa也屬于開源軟件,其小型的特點使得更適合應用于嵌入式應用。本文將按照以下方式組織內(nèi)容。第二部分用于接上系統(tǒng)的結(jié)構(gòu),第三部分將詳細介紹其原理和核心技術(shù)的實現(xiàn),在第四部分測試并分析最終結(jié)果,最后將在第五部分進行總結(jié)。2、系統(tǒng)結(jié)構(gòu)本IMES系統(tǒng)可以分成3個部分,監(jiān)控子系統(tǒng),網(wǎng)絡(luò)傳輸子系統(tǒng)和控制中心子系統(tǒng),如下面圖1所示。圖1 IMES系統(tǒng)架構(gòu)在監(jiān)控子系統(tǒng)中,主要工作是捕獲和壓縮圖片。如果系統(tǒng)設(shè)置為“主動模式”,S3c2440將定期地將靜態(tài)圖片發(fā)送到數(shù)據(jù)庫。另一方面,如果系統(tǒng)設(shè)置為“被動模式”,用戶 可以通過web瀏覽器獲得當前圖像。在監(jiān)控系統(tǒng)中由于磁盤容量的限制,圖

6、像應該及時地被傳輸?shù)娇刂浦行闹幸员苊獯疟P占滿導致數(shù)據(jù)丟失。根用戶能夠通過web瀏覽器遠程管理所有設(shè)置,像設(shè)置圖片大小,設(shè)置壓縮比率和設(shè)置圖片捕獲間隔時間等。特別的,監(jiān)控系統(tǒng)硬件平臺如下圖2所示:圖2 硬件平臺3、核心技術(shù)通常許多嵌入式行業(yè)的開發(fā)者都支持Linux操作系統(tǒng),因為它免費且開源。此外,小內(nèi)核,高效率和可定制使Linux在嵌入式行業(yè)更為流行,比如手機,小型電腦,網(wǎng)絡(luò)路由,電視,視頻游戲終端等。通常攝像頭之間性能是不同的,大多數(shù)攝像頭支持YUV格式。為了便于進行數(shù)字圖像處理,不得不將其轉(zhuǎn)化成RGB格式。Libjpeg選擇為圖像壓縮的工具。在獲取和壓縮了圖像后,IMES將通過ftplib發(fā)

7、送到目標通道。圖3是實現(xiàn)的軟件流程圖:圖3 軟件流程圖3.1 V4L2V4L2是V4L(video for linux)的第二個版本,它是Linux視頻捕獲應用程序的編程接口,支持許多USB網(wǎng)絡(luò)攝像頭,TV調(diào)音和其他設(shè)備。V4l2與linux內(nèi)核精密結(jié)合。V4l在V4W(video for Windows)后才被命名,但并不意味著它們在技術(shù)上雷同。在內(nèi)核開發(fā)過程中,早在2.1.x版本的內(nèi)核中介紹了最初的v4l。通過設(shè)計者的修改和調(diào)試最終出現(xiàn)是在2.5.x內(nèi)核中。對于一個標準的框架,v4l2包含了兩層含義。第一層含義是應用程序能夠通過打開設(shè)備文件(/dev/video)來獲取設(shè)備的相關(guān)信息、設(shè)置

8、設(shè)備熟悉等等。另一層含義就是驅(qū)動程序必須實現(xiàn)框架所提供的設(shè)置設(shè)備屬性的回調(diào)函數(shù)。絕大多數(shù)設(shè)置和查詢函數(shù)通過使用v4l2編程接口提供的ioctl(int fd,int request, void *argp)函數(shù)調(diào)用。再者,具有代表性的設(shè)備都有許多由用戶控制的接口,比如亮度,飽和度設(shè)置等。不過,對于不同的設(shè)備來說可能有不同的有效的控制,并且其可能的取值和默認值隨設(shè)備的不同都有所差異。其中“request”參數(shù)能夠作為ioctl函數(shù)的控制命令以此來操作不同的設(shè)備。V4L2已經(jīng)定義了一些主要的命令,如下表1所示:表1 主要命令和其說明3.2 圖像壓縮顏色空間是一個三維坐標系統(tǒng),并且每種顏色通過一個點

9、的坐標來表述。在RGB顏色空間中,紅、綠、藍是最基本的元素。RGB通常在監(jiān)視器上使用。YUV(YCrCb)格式通常用在PAL制式上,這是歐洲默認的電視傳輸標準和視頻壓縮標準。YUV是一種典型使用彩色圖像管道的一部分的顏色空間。它編碼彩色圖片和視頻時,可以考慮到人類的感知,可以減少色度分量的位寬,因此這使得傳輸或壓縮過程中的錯誤比直接使用RGB模式的數(shù)據(jù)更有效地掩蓋了。在YUV空間中,每種顏色有一個亮度值Y和兩個色度值U和V。亮度信號表明了顏色的強度,使其與色度信號分開,其中亮度的改變不會影響色度值。數(shù)字圖像處理專用于圖片,因此YUV必須要轉(zhuǎn)化成RGB格式。標準白光源和不同坐標系下的熒光粉,IT

10、U無線電通信部門(ITU-R)和電影與電視工程師協(xié)會(SMPTE)為YUV和RGB之間的轉(zhuǎn)化提供了幾種變換矩陣。下面的公式符合SMPTE 170三色坐標和參考白色。 (1)(1)中,R、G、B在0-1的范圍,Y在0-1的范圍,U和V是0.5 0.5范圍內(nèi)。在計算機技術(shù)中,JPEG是在數(shù)碼攝像中常用的一種有損壓縮方法。壓縮的程度可以調(diào)整,允許在圖像大小和圖像質(zhì)量之間進行權(quán)衡抉擇。同時,它是用戶在占用小存儲空間時能夠得到高質(zhì)量圖片的優(yōu)秀圖像壓縮方法,故它非常適用于嵌入式系統(tǒng)。JPEG通常能夠達到10:1的壓縮率,并且圖像質(zhì)量并沒有明顯的損失。典型使用的JPEG屬于有損壓縮方法,多少降低了圖像的保真

11、度,它不應該用于需要精確復制數(shù)據(jù)的場景。Libjpeg是一個非常廣泛的使用C語言來讀寫jpeg圖像文件的庫。它是由Tom和一個非正式的并沒有加入JPEG的國際化標準組織協(xié)會的獨立JPEG小組在1990年開發(fā)的,目前由幾個開發(fā)者在開源社區(qū)中通過各種服務進行維護總結(jié)。由于嵌入式系統(tǒng)資源和通信帶寬的限制,壓縮圖像是非常有必要的。在本文的嵌入式系統(tǒng)中,libjpeg能夠修改成滿足在ARM平臺上的需求的具有高壓縮率的并且仍然能夠保持高清晰和高質(zhì)量圖像。第一個解決方案是修改在libjpeg中的函數(shù)jpeg_set_quality (cinfo, quality,force_baseline)中有關(guān)壓縮質(zhì)量

12、的值。這個函數(shù)主要用于調(diào)整圖像質(zhì)量的比率。然后理想的圖片在不同的域中按不同的定義可以被獲得。Libjpeg庫中與壓縮圖像有關(guān)的程序流程如下圖4:圖4 libjpeg中圖像壓縮流程3.3 FTP傳輸在基于TCP的網(wǎng)絡(luò)中,文件傳輸協(xié)議(FTP)是一個標準的用于在一個主機到另一個主機之間進行文件傳輸?shù)木W(wǎng)絡(luò)協(xié)議,比如英特網(wǎng)。Ftplib是一個FTP協(xié)議的常規(guī)實現(xiàn)集。他們允許應用程序創(chuàng)建和訪問遠程文件通過函數(shù)調(diào)用來實現(xiàn),而不是需要調(diào)用fork和執(zhí)行一個交互式的ftp客戶端程序。在這個IMES中,F(xiàn)tplib是作為一個從嵌入式系統(tǒng)到監(jiān)控終端的數(shù)據(jù)傳送工具。其中一些主要的函數(shù)見以下列表:3.4 web服務器

13、隨著網(wǎng)絡(luò)的發(fā)展,Web應用程序已成為嵌入式設(shè)備管理和交互的主要趨勢。這個流行的結(jié)構(gòu)稱為B/S(瀏覽器/服務器)結(jié)構(gòu)。在這個結(jié)構(gòu)中,用戶接口通過www瀏覽器的工作來實現(xiàn),和非常簡單的邏輯瀏覽器實現(xiàn),但是主要邏輯在服務器。這大大簡化了客戶端計算機的負荷,減少了系統(tǒng)維護和升級的費用和工作量,也減少了用戶整體的費用。它是一次性到位的開發(fā),能實現(xiàn)不同的人員從不同的地點,不同的訪問模式(如局域網(wǎng)、廣域網(wǎng)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和訪問管理,同時也保護了數(shù)據(jù)庫服務器的安全。在這篇文章中,主要涉及boa服務器和CGI。3.4.1 BoaBoa是一個單任務的HTTP服務器

14、。這意味著它不像傳統(tǒng)的服務器那樣為每個鏈接的客戶創(chuàng)建一個任務,也就是說它不會將自己的資源復制供連接進來的客戶端使用。它內(nèi)部對所用連接進來的HTTP采用多路復用的方式進行,僅僅只為運行CGI程序、目錄的自動生成和文件的自解壓等創(chuàng)建一個進程。所以它最大程度的保護了系統(tǒng),所以說它對嵌入式系統(tǒng)來說非常重要。Boa服務器跟其他web服務器一樣,能夠完成接收請求、分析請求、相應請求和返回請求的結(jié)果等等任務。Boa服務器的功能的實現(xiàn)是通過建立連接,綁定端口,攔截,處理請求。其過程包括:(1)、完成web服務器的初始化工作。比如創(chuàng)建一個環(huán)境變量,創(chuàng)建TCP套接字,綁定端口,開始獲取連接和等待客戶端連接請求等。

15、(2)、接收客戶端請求,和在客戶端請求連接后,保持連接請求的相關(guān)信息。(3)、分析客戶端請求,決定請求方式,URL目標,和形成信息等。然后按照請求進行相應。3.4.2 CGICGI(公共網(wǎng)關(guān)接口)是一個標準的web服務器軟件。其功能是按照web內(nèi)容生成可執(zhí)行文件。這些文件被稱為CGI腳本;他們是程序,通常是獨立的應用程序,通常用腳本語言編寫的。它使網(wǎng)頁更加生動,它被廣泛用在搜索引擎和留言板。工作基本機制是:(1)將數(shù)據(jù)發(fā)送到網(wǎng)關(guān)程序CGI是服務器和服務器外的網(wǎng)關(guān)程序間的一個常規(guī)接口。CGI指定如何數(shù)據(jù)被發(fā)送到網(wǎng)關(guān)程序(網(wǎng)關(guān)程序作為環(huán)境變量或或從標準輸入讀取數(shù)據(jù))和數(shù)據(jù)發(fā)送(一般來說,所有客戶機

16、向服務器發(fā)送的數(shù)據(jù),加上額外的環(huán)境變量描述的狀態(tài)服務器)。(2)返回數(shù)據(jù)到客戶端為了返回數(shù)據(jù)到客戶端程序(其實就是用戶的web瀏覽器),網(wǎng)關(guān)程序只需要把數(shù)據(jù)寫到它的標準輸出就可以了。這些數(shù)據(jù)發(fā)送回客戶端,經(jīng)過服務器的處理以確保有正確的描述數(shù)據(jù)的信息頭和時間的狀態(tài)信息。圖5闡述了用戶訪問CGI程序的流程。其中實線表示使用HTTP和CGI的數(shù)據(jù)流。HTTP傳輸數(shù)據(jù)從客戶機向HTTP服務器和以同樣的方式返回。CGI機制控制服務器和網(wǎng)關(guān)程序的數(shù)據(jù)流。這就被稱為網(wǎng)關(guān)程序,因為他們通常作為萬維網(wǎng)之間的網(wǎng)關(guān)和服務器端資源(如數(shù)據(jù)庫、反饋形式,可點擊的圖像塊等。、圖5 網(wǎng)關(guān)程序的數(shù)據(jù)流4、系統(tǒng)最終的建立和系統(tǒng)

17、測試結(jié)果4.1 監(jiān)控系統(tǒng)中的交叉編譯所有的開源軟件libjpeg、ftplib和boa,都應該使用交叉編譯的方式進行編譯以使其能夠運行在ARM-Linux平臺上。交叉編譯工具是指可以編譯運行于宿主機之外的其他平臺上的可執(zhí)行程序。交叉編譯工具主要用于為嵌入式系統(tǒng)或其他平臺生成可執(zhí)行代碼。它通常用來編譯為那些理論上編譯是不可行的平臺上編譯程序,比如不支持操作系統(tǒng)的單片機。Arm-none-linux-gnueabi是一個專為ARM公司和基于GCC源碼的交叉編譯器。本文中移植就采用這個交叉編譯工具。4.2 客戶端設(shè)計Web客戶端程序(比如web瀏覽器)能夠從許多不同的服務器上訪問程序,比如gophe

18、r、FTP、NNTP或者HTTP。HTTP服務器是專為web設(shè)計的,并且采用了一個支持從服務器到瀏覽器發(fā)送文檔的協(xié)議,并且也支持從客戶端發(fā)送復雜的數(shù)據(jù)到服務器。這里為達到這種目的有幾種HTTP方式(在HTTP中,方法是一個在客戶瀏覽器和服務器傳輸數(shù)據(jù)的技術(shù)術(shù)語)。最常見的方法有:(1)GET。數(shù)據(jù)通過查詢URL的字符串被傳遞。(2)POST。數(shù)據(jù)可以作為一個跟隨客戶端到服務器的請求消息的消息體被發(fā)送。這比GET方式復雜,但是允許發(fā)送更多的復雜數(shù)據(jù)。在IMES中,采用的是POST方式。4.3 測試結(jié)果為了在獲得最大壓縮率和可接受的清晰度函數(shù)jpeg_set_quality()中設(shè)置一個合理的質(zhì)量因子,首先就要對此做一些測試。采用純色圖片Pureblue.bmp、apple.bmp和Flower.bmp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論