李世超
摘要:體積小、操作簡單、滿足多種場景使用的視頻監(jiān)控系統(tǒng),是獲取更多安全信息的有效途徑之一。本文運用嵌入式系統(tǒng)、圖形采集、圖像處理及圖像傳輸?shù)燃夹g(shù),使用ARM處理器及外圍設(shè)備組建信號處理單元,設(shè)計了數(shù)據(jù)推送單元的硬件電路,搭建Camera數(shù)據(jù)推送單元所需的開發(fā)環(huán)境把處理過的圖像信號推送到Linux終端的Qt應(yīng)用中展示。所設(shè)計的系統(tǒng),提高了穩(wěn)定性,具有一定的實際意義。
關(guān)鍵詞:視頻監(jiān)控系統(tǒng);數(shù)據(jù)推送單元;嵌入式終端
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)28-0276-03
視頻監(jiān)控技術(shù)與我們的生活有著不可分割的關(guān)系,現(xiàn)在人們越來越注重生活場所的安全,希望通過視頻監(jiān)控技術(shù)獲得更多的安全信息,而傳統(tǒng)的視頻監(jiān)控系統(tǒng)具有體積大、價格昂貴、安裝拆卸不方便等眾多不便捷的因素。所以人們越來越迫切需要體積小、操作簡單、滿足多種場景使用的視頻監(jiān)控系統(tǒng),Camera數(shù)據(jù)推送單元在這種背景下應(yīng)運而生,主要改善傳統(tǒng)視頻監(jiān)控的使用不方便、操作復(fù)雜、復(fù)用能力差等缺點。從而形成了具有一定發(fā)展?jié)摿Φ氖袌觥amera數(shù)據(jù)推送單元在信號處理、監(jiān)控技術(shù)及通信技術(shù)的推動下不斷的完善。 Camera數(shù)據(jù)推送單元在當(dāng)下的發(fā)展?jié)u漸的開始從模擬信號時期轉(zhuǎn)化為數(shù)字信號時期,數(shù)據(jù)推送單元加上組建普及的互聯(lián)網(wǎng),他們結(jié)合后將會產(chǎn)生一種全新的視頻監(jiān)控系統(tǒng),可以被更多的用戶使用。而以Camera數(shù)據(jù)推送單元為基礎(chǔ)的互聯(lián)網(wǎng)監(jiān)控也將因此變?yōu)橐粋€很好的發(fā)展方向[2]?;ヂ?lián)網(wǎng)加入視頻傳輸之后,則會大大降低傳輸過程的成本,而且還具有便捷易復(fù)用的特點,傳統(tǒng)視頻監(jiān)控系統(tǒng)則會發(fā)生翻天覆地的變化。使用Linux 操作系統(tǒng)的數(shù)據(jù)推送單元可以將應(yīng)用中的視頻數(shù)據(jù)通過網(wǎng)路進行實時傳輸更新,傳輸后的視頻圖像可以顯示在用戶的屏幕上,也可以使用存儲設(shè)備將視頻信息存儲到硬盤中,以備后期的錄像查看以及視頻信息轉(zhuǎn)移等。
本設(shè)計介紹了一種基于 ARM 和 Linux操作系統(tǒng)的Camera數(shù)據(jù)推送單元的實現(xiàn)方案。本設(shè)計是以嵌入式ARM9為核心的硬件處理器,使用定制的Linux操作系統(tǒng),使用ARM處理器及外圍設(shè)備組建信號處理單元,最后把處理過的圖像信號推送到Linux終端的Qt應(yīng)用中展示。
1 系統(tǒng)方案設(shè)計
攝像頭也被稱為電腦相機、電腦眼等,一般分為數(shù)字?jǐn)z像頭和模擬攝像頭兩大類。作為一種視頻輸入設(shè)備的它,在以往被普遍應(yīng)用于視頻會議、遠(yuǎn)程就診及遠(yuǎn)程監(jiān)控等方面。近年來,隨著攝像頭制造技術(shù)的成熟,使得它的價格降低到多數(shù)人可以承受程度,尤其很多附加功能越來受到人們的歡迎。本文在系統(tǒng)設(shè)計與實現(xiàn)過程中所采用以下幾個關(guān)鍵技術(shù)。
1.1模擬攝像頭數(shù)據(jù)推送單元的設(shè)計
模擬攝像頭采集的是模擬信號,采集的視頻信號必須經(jīng)過特定的視頻捕捉卡將模擬信號轉(zhuǎn)換成數(shù)字信號,并加以壓縮后才可以轉(zhuǎn)換到終端設(shè)備上使用。在視頻監(jiān)控系統(tǒng)中,攝像頭是最基本、最前端、投資數(shù)量最多的產(chǎn)品,重要性毋庸置疑,它負(fù)責(zé)采集視頻圖像并將模擬信號轉(zhuǎn)為數(shù)字信號,然后再進行傳輸使用,采集信號的質(zhì)量將直接影響視頻監(jiān)控系統(tǒng)的整個使用環(huán)節(jié),同時也決定整個系統(tǒng)的工程造價。
1.2數(shù)字?jǐn)z像頭數(shù)據(jù)推送單元的設(shè)計
數(shù)字?jǐn)z像頭將捕捉到的視頻信號直接存儲為數(shù)字信號,然后可以通過串口、并口或者USB傳送到終端顯示設(shè)備。如今市面上的攝像頭多數(shù)以數(shù)字?jǐn)z像頭為主,數(shù)字?jǐn)z像頭中多數(shù)以新型USB的數(shù)據(jù)傳輸接口進行數(shù)據(jù)傳輸。攝像頭的主要組件和結(jié)構(gòu)包括鏡頭、感光芯片、主控芯片、電源等。數(shù)字?jǐn)z像頭的工作原理為:景像通過鏡頭后生成的光學(xué)圖像投射到圖像傳感器上,而后傳換成電信號,經(jīng)過模數(shù)轉(zhuǎn)換(A/D)后將模擬信號轉(zhuǎn)換為數(shù)字信號,再傳輸?shù)綌?shù)字信號處理芯片(DSP)中加工處理,然后再通過USB等接口傳輸?shù)浇K端處理,通過終端設(shè)備的顯示屏就可以看到圖像了。
2 數(shù)據(jù)推送單元軟件的設(shè)計
2.1 視頻圖像的采集
Linux系統(tǒng)中可使用USB攝像頭進行圖像的采集。Linux中的內(nèi)存分為了用戶空間和內(nèi)核空間,用戶空間可由應(yīng)用程序進行訪問,而內(nèi)核空間需要Linux系統(tǒng)進行操作和管理。采集圖像數(shù)據(jù)時,采集到的數(shù)據(jù)信息是存放在內(nèi)核空間的,如果用戶想要通過應(yīng)用程序進行操作則需要將數(shù)據(jù)信息的地址進行轉(zhuǎn)換。實現(xiàn)視頻數(shù)據(jù)的連續(xù)采集需要使用內(nèi)存映射的方式,為了實現(xiàn)視頻數(shù)據(jù)的連續(xù)采集,即實現(xiàn)實時監(jiān)控,Linux系統(tǒng)中需要采用內(nèi)存映射的方式進行采集。與此同時還要解決因為網(wǎng)絡(luò)數(shù)據(jù)過大而引起的花屏、掉幀、圖像失真等問題,具體解決辦法可以采用減小傳送數(shù)據(jù)所占的帶寬,為了保證圖像數(shù)據(jù)能夠穩(wěn)定的傳輸,選擇合適的圖像傳輸幀率,圖像壓縮率、屏幕分辨率、像素色深就會顯得尤為重要。
2.2驅(qū)動程序的設(shè)計
Linux系統(tǒng)中內(nèi)核與其應(yīng)用程序是分開管理的,包括內(nèi)核模式和用戶狀態(tài)兩個層次。內(nèi)核模式和權(quán)限模式具有不同的權(quán)限,內(nèi)核模式權(quán)限相對更高,如果想要改變分配方式、處理器內(nèi)存相關(guān)的映射都需要在內(nèi)核模式下實現(xiàn)。用戶狀態(tài)主要為系統(tǒng)使用者提供,用戶操作的應(yīng)用程序一般都是在用戶狀態(tài)下工作。如果使用者需要更高的權(quán)限或者需要訪問特殊的資源則需要切換到內(nèi)核模式下進行操作。Linux系統(tǒng)與外圍設(shè)備的進行交互時需要通過驅(qū)動程序?qū)崿F(xiàn),Linux以文件的形式存儲系統(tǒng)的驅(qū)動程序,驅(qū)動程序可以實現(xiàn)外圍設(shè)備對處理器中斷、DMA、定時器等的操作,從而搭建外圍設(shè)備與處理器連接的橋梁。
Linux操作系統(tǒng)可以支持豐富的USB外設(shè),S3C2440已經(jīng)包含了USBHost驅(qū)動支持,在我們需要使用某個接口的驅(qū)動時,我們只需要配置相應(yīng)的內(nèi)核就可以了。因此開發(fā)者可以根據(jù)不同的外圍設(shè)備開發(fā)不同的驅(qū)動程序,快速實現(xiàn)處理器對外圍設(shè)備的控制。
常見的視頻設(shè)備包括CMOS攝像頭和USB攝像頭,Linux系統(tǒng)中視頻設(shè)備采用V4L標(biāo)準(zhǔn)。攝像頭應(yīng)用程序需要的庫文件、接口函數(shù)在V4L中都有提供,Linux操作系統(tǒng)與用戶應(yīng)用程序以及攝像頭設(shè)備驅(qū)動都可以通過V4L標(biāo)準(zhǔn)進行數(shù)據(jù)傳輸和交流。
Linux操作系統(tǒng)通過./mknod命令來添加設(shè)備節(jié)點,各設(shè)備都會有自己的設(shè)備號,系統(tǒng)對設(shè)備的操作通過設(shè)備號進行建立聯(lián)系。本系統(tǒng)中使用一個USB攝像頭設(shè)備,在編程時不再需要單獨設(shè)置設(shè)備號。USB攝像頭驅(qū)動程序的實現(xiàn)流程如圖1所示:
2.3 Qt應(yīng)用程序的設(shè)計
2.3.1 Qt應(yīng)用程序簡介
Qt應(yīng)用是奇趣科技1991年開發(fā)的跨平臺圖形用戶界面開發(fā)框架,被廣泛用于開發(fā)GUI應(yīng)用程序,有時候也被稱為部件工具箱。也能用于非GUI應(yīng)用的開發(fā),例如控制臺工具和服務(wù)器等。它是Digia公司的產(chǎn)品,使用標(biāo)準(zhǔn)的C++和特殊的代碼生成對象編譯器和一些宏。通過語言綁定,其他的編程語言也可以使用QT應(yīng)用。
Qt具有跨平臺特性,并且具有良好的封裝機制使得Qt的模塊化程序非常高,復(fù)用性較強;提供signal/slots機制替代callback,使得各個原件之間的工作變得十分簡單。除此之外,Qt還具有強大的C++圖形庫,近年來逐步集成數(shù)據(jù)庫、OpenGL、多媒體庫、網(wǎng)絡(luò)等,很好的豐富了Qt開發(fā)大規(guī)模的跨平臺應(yīng)用程序的能力。
2.3.2 Qt應(yīng)用程序的實現(xiàn)
在完成Linux開發(fā)所需要的環(huán)境后,即可以在虛擬機中進行Qt開發(fā),最終的開發(fā)的應(yīng)用程序可以在開發(fā)板上調(diào)試運行。開發(fā)過程中需要使用arm-linux-gcc交叉編譯工具,
安裝arm-linux-gcc之前需要配置環(huán)境變量,安裝后可以使用./configure添加-thread選項,這樣就可以在庫文件中包含libqte-mt動態(tài)庫,從而可以支持多線程。Qt應(yīng)用程序的開發(fā)流程如圖2所示:
搭建開發(fā)環(huán)境以后,開發(fā)者就可以在宿主機上開發(fā)和調(diào)試應(yīng)用程序,經(jīng)過交叉編譯可生成可執(zhí)行文件。開發(fā)Qt應(yīng)用程序時,首先可繼承Qt已有的類,再根據(jù)所需要的功能編寫自己所需要的類,多數(shù)開發(fā)者都會按照這樣的思路去開發(fā)應(yīng)用程序。Qt應(yīng)用程序可以通過.pro文件進行工程管理,在設(shè)計時可以使用基于工程的一些方法。
Qt應(yīng)用程序在編程實現(xiàn)GUI時可以采用直接編程或使用Qt Designer實現(xiàn)。作為一種設(shè)計Widget的應(yīng)用程序,在它的界面上可以方便的進行各組件的分布,創(chuàng)建的GUI界面可供開發(fā)者直接進行可視化設(shè)計。開發(fā)Qt應(yīng)用程序時包含編寫源文件和下載開發(fā)板調(diào)試運行兩個階段,其中源文件的流程和編寫在本文中略。
3 結(jié)論
對于Camera數(shù)據(jù)推送單元的研究,結(jié)合了嵌入式系統(tǒng)、圖形采集、圖像處理及圖像傳輸?shù)燃夹g(shù),具有明顯的意義。文中所設(shè)計的系統(tǒng)不僅提高了監(jiān)控系統(tǒng)的穩(wěn)定性,而且解決傳統(tǒng)監(jiān)測系統(tǒng)中攝像頭需要專門的布線才能將圖像信息傳遞給客戶端的缺點,更具有實際意義,例如加快國內(nèi)城鎮(zhèn)化與城市化建設(shè),降低安全事故頻發(fā)區(qū)事故率,家居防盜和病人監(jiān)測等,這些方面都需要具有Camera數(shù)據(jù)推送單元的保證。
參考文獻(xiàn):
[1] 梁篤國.網(wǎng)絡(luò)視頻監(jiān)控技術(shù)及應(yīng)用[M].北京:人民郵電出版社,2009.
[2] 付詩君,陳其松.基于ARM9+Linux的遠(yuǎn)程車載視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].自動化與儀器儀表,2014(4):132-134.
[3] 袁小平,鮑捷,張明濤,等.基于嵌入式Web Server的煤礦視頻監(jiān)控系統(tǒng)研究[J].電視技術(shù),2014,38(9):232-238.
[4] 金明哲.基于云計算的嵌入式Linux視頻檢測系統(tǒng)的設(shè)計[D].上海:東華大學(xué),2015.
[5] 吳大中,胡江浪.基于ARM的移動視頻監(jiān)控系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2016,39(4):124-127+131.