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