• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于CamShift跟蹤算法的塔吊監(jiān)控系統(tǒng)設(shè)計*

      2013-12-29 10:33:02張自嘉王慧敏
      電子器件 2013年6期
      關(guān)鍵詞:吊鉤塔吊終端

      王 旭,張自嘉,王慧敏

      (南京信息工程大學(xué)信息與控制學(xué)院,南京210044)

      塔吊是現(xiàn)代建筑必不可少的吊運工具,但是由于塔吊吊臂較長,作業(yè)距離遠,工地情況復(fù)雜,駕駛員作業(yè)過程中會出現(xiàn)不少視覺盲區(qū),導(dǎo)致運行效率不高,而且安全事故頻發(fā)。目前工地上主要通過地面指揮人員使用對講機和信號旗手進行指揮,這種單一的人工模式并沒有很好地解決塔吊作業(yè)中視覺盲區(qū)問題,有時甚至因為指揮人員表達不準確而導(dǎo)致操作失誤,造成嚴重的后果。相關(guān)文獻介紹了當(dāng)前工地上使用的一些視頻監(jiān)控設(shè)備,它們主要是基于PC機平臺,而且是供遠程安監(jiān)人員對工地實時監(jiān)測,相對于本來就很狹小的駕駛室來說,PC機體積較大,安裝使用起來很不方便。因此,設(shè)計了針對駕駛員使用的便攜式監(jiān)控設(shè)備,相比現(xiàn)有的視頻監(jiān)控系統(tǒng),該系統(tǒng)還加入了CamShift跟蹤算法,實現(xiàn)了對吊鉤的實時跟蹤,很大程度上減輕了駕駛員的視覺疲勞,對駕駛員的操作有一定的輔助作用。

      1 系統(tǒng)總體設(shè)計

      本論文要設(shè)計的是一個具有實時跟蹤功能的無線視頻傳輸系統(tǒng)。系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示[1],該系統(tǒng)由視頻采集終端、無線網(wǎng)絡(luò)設(shè)備、以及視頻接收終端組成。視頻采集終端將USB攝像頭采集到的實時視頻數(shù)據(jù)傳輸?shù)街骺卦O(shè)備的視頻管理模塊中,對獲取的視頻數(shù)據(jù)使用CamShift跟蹤算法并調(diào)用OpenCV庫函數(shù)實現(xiàn)對吊鉤的實時動態(tài)跟蹤,然后對大量的視頻數(shù)據(jù)采用H.264編碼方式進行壓縮編碼處理,最后通過WIFI無線模塊把數(shù)據(jù)信息和控制信號發(fā)送到無線網(wǎng)絡(luò)設(shè)備。視頻接收終端通過WIFI無線模塊訪問網(wǎng)絡(luò)設(shè)備,將獲取的視頻數(shù)據(jù)信息進行解壓縮處理,恢復(fù)出原始的視頻數(shù)據(jù)信息,最終將視頻圖像顯示在LCD上,實現(xiàn)駕駛員對塔吊的實時監(jiān)控[2]。

      圖1 系統(tǒng)結(jié)構(gòu)框圖

      2 系統(tǒng)硬件設(shè)計

      該系統(tǒng)硬件主要由兩部分組成,視頻采集終端和視頻接收終端。采集終端負責(zé)視頻數(shù)據(jù)的實時采集、跟蹤算法處理、壓縮編碼以及無線傳輸功能。接收終端負責(zé)視頻數(shù)據(jù)的無線接收、解壓縮以及實時顯示的功能。下面分別介紹這兩部分的硬件。

      采集終端的硬件結(jié)構(gòu)框圖如圖2所示,其核心部分由S3C6410微處理器和256M的DRAM、1GB的NAND Flash以及多種外設(shè)接口(如USB接口、SDIO接口、以太網(wǎng)接口等)組成的最小系統(tǒng)。USB攝像頭與主控設(shè)備的USB HOST接口相連接,攝像頭采用OmniVision公司的OV9650芯片,它支持的最大分辨率為1 300×1 028,可以輸出 GRB(4 ∶2 ∶2)、YUV(4 ∶2 ∶2)和YCbCr(4∶2∶2)3種視頻格式,這3種格式均符合CCIR601和CCIR656標準。WIFI無線模塊采用Marvell公司低成本、低功耗的88W8686芯片[3],它通過SDIO接口與主控設(shè)備相連,遵循IEEE 802.11g標準,而且兼容802.11b協(xié)議標準,工作在2.4GHz頻段,最高傳輸速率可達54 Mbit/s。

      圖2 采集終端結(jié)構(gòu)框圖

      上述所說的采集終端安裝在塔吊駕駛室前方的吊臂上,整個設(shè)備采用防護罩遮擋,避免惡劣天氣影響,攝像頭向下安裝,對準吊鉤,實時采集吊臂下方工地的視頻數(shù)據(jù)。

      接收終端的硬件結(jié)構(gòu)圖框圖如圖3所示,它與視頻采集終端相比,減少了USB攝像頭模塊,添加了LCD液晶顯示模塊以及SD存儲模塊。LCD液晶顯示模塊用來顯示無線網(wǎng)絡(luò)傳輸過來的實時視頻圖像,而SD存儲卡用于視頻數(shù)據(jù)信息的存儲,便于以后對視頻的回顯需求。該接收終端體積小巧而且操作簡單,便于駕駛員在駕駛室中進行實時監(jiān)控。

      圖3 接收終端結(jié)構(gòu)框圖

      3 系統(tǒng)軟件設(shè)計

      3.1 軟件環(huán)境介紹

      Linux操作系統(tǒng)以其靈活性和高效性著稱。它具有開放的源代碼,用戶可以根據(jù)自己的需求進行修改重新編譯,同時支持多任務(wù)、多用戶的功能,而且具有眾多的硬件支持特性,是一個跨平臺的系統(tǒng)。該監(jiān)控系統(tǒng)的軟件設(shè)計采用目標機和PC機相互結(jié)合的方式,掛載根文件系統(tǒng),使得在PC機平臺上可以直接操作目標機。

      PC 機選擇在 ubuntu9.10 環(huán)境下運行[4],armlinux-gcc交叉編譯工具鏈選用4.5.1版本,開發(fā)板使用linux2.6.38內(nèi)核,同時本系統(tǒng)選擇移植的計算機視覺庫為OpenCV2.2.0版本,對于OpenCV2.0之后的版本,必須使用CMake創(chuàng)建Makefile文件,所以選用CMake 2.8.9的版本。完成上述幾個平臺環(huán)境的搭建之后就可以進行OpenCV2.2.0庫的移植了。

      3.2 移植OpenCV2.2.0到Tiny6410開發(fā)板

      OpenCV計算機視覺庫的移植對實現(xiàn)實時跟蹤功能起到至關(guān)重要的作用。但是OpenCV在移植到開發(fā)板的過程中會碰到編譯出錯,下面就介紹下OpenCV的移植過程以及如何解決這些編譯錯誤:

      首先將opencv2.2.0源碼解壓到/work/tools目錄下,并在該目錄下建立opencv-source文件夾,在該文件夾下建一個list目錄用來存放編譯生成的文件,在/work/tools/opencv2.2.0目錄下運行cmakegui,然后進行下面的環(huán)境配置:

      然后進入下一頁配置:

      再進入下一頁配置:

      然后Finish完成基本配置。

      接著修改默認配置選項,默認安裝目錄為/usr/local,但是對于交叉編譯的庫來說此路徑并不合適,所以要把CMAKE_INSTALL_PREFIX變量改為/work/tools/install/,另外去掉WITH_TIFF選項,因為沒有安裝支持TIFF的圖像。點擊Generate就生成了Makefile文件。最后進入到/work/tools/opencvarm目錄下運行make編譯命令,在opencv編譯時發(fā)現(xiàn)如下幾個錯誤:

      (1)編譯錯誤1:

      OpenCV-2.2.0/modules/ml/src/gbt.cpp:474:error:'expl'was not declared in this scope;因為代碼中并沒有聲明“expl”,所以修改 gbt.cpp,注釋掉//#if ANDROID和//#endlf,然后重新編譯。

      (2)編譯錯誤2:

      Linking CXX executable../../bin/opencv_createsamples;修改/work/tools/opencv-arm/目錄下 CMake-Cache.txt文件,XE_LINKER_FLAGS選項為空,現(xiàn)在加上-lpthread-lrt,因為cmake不認識所定義的arm-linux系統(tǒng)標記,所以要加上庫pthread和rt的鏈接選項,然后重新編譯。

      (3)編譯錯誤3:

      注釋掉//#define ARM_NO_SIFT,然后重新編譯成功。

      運行make install,把opencv生成的頭文件和庫文件復(fù)制到交叉編譯器中,測試下arm-linux-g++-lcv-lcxcore-lhighgui-lpthread-lrt-o CamShift CamShift.c,生成二進制文件。然后復(fù)制/opt/arm/lib下的庫文件到S3C6410開發(fā)板的/lib/目錄下。由于S3C6410開發(fā)板的linux不支持OpenCV自己的Highgui文件,所以不能在目標板上使用cvName-Widow(),cvWaitKey(),cvShowImage()等顯示函數(shù),但是可以利用OpenCV里面的cvLoad()等函數(shù)。正因為如此,選擇安裝支持OpenCV的GTK就會很復(fù)雜,所以我們選擇用Qt界面來顯示。最后復(fù)制CamShift執(zhí)行文件到開發(fā)板中,結(jié)果執(zhí)行正常,可以在開發(fā)板實現(xiàn)實時跟蹤,說明OpenCV2.2.0移植成功了。

      3.3 CamShift跟蹤算法實現(xiàn)

      駕駛員長時間在監(jiān)控視頻中尋找吊鉤的位置,判斷吊鉤距離作業(yè)面高度,難免會產(chǎn)生視覺疲勞,造成判斷失誤,所以系統(tǒng)引入了CamShift跟蹤算法,實時跟蹤吊鉤位置。CamShift是OpenCV中運動物體的動態(tài)跟蹤算法[5],它將Mean-Shift算法擴展到連續(xù)的圖像序列,利用吊鉤鮮明的黃顏色特征信息進行追蹤,并對視頻所有的圖像幀做Mean-Shift運算,把上一幀的搜索窗口作為下一次計算的初始值,如此迭代下去,即可實現(xiàn)對目標的跟蹤。該算法的流程圖如圖4所示,它的實現(xiàn)主要有如下3個部分:

      第1步為Back Projection計算,因為RGB顏色空間對光照變化較為敏感,為了減少這種影響,調(diào)用cvCvtColor()函數(shù)將獲得的圖像從RGB空間轉(zhuǎn)換到HSV空間,然后調(diào)用cvCreateHist()函數(shù)計算其中的H分量的直方圖,即可得到顏色概率查找表,最后通過調(diào)用cvCalcBackProject()函數(shù)將圖像中每個像素的值用其顏色出現(xiàn)的概率對替換,得到顏色概率分布圖。為后面的匹配跟蹤提供了線索。

      第2步為Mean Shift算法,它是利用概率密度的梯度爬升來尋找局部最優(yōu),通過1階矩除以0階矩來計算質(zhì)心,用計算出的質(zhì)心作為下一步的中心,然后向中心一直迭代,直到窗口的位置不再變化。通過調(diào)用OpenCV中cvMeanShift()函數(shù)實現(xiàn)上述過程的迭代。

      第3步為CamShift算法[6],它的算法思想主要由如下5個步驟完成:①確定初始化目標大小和位置以及搜索區(qū)域;②計算出目標的H分量直方圖;③通過直方圖計算出圖像的反向投影圖;④運行Mean Shift;⑤以上一步搜索窗口的中心位置以及計算出新的窗口大小為參數(shù),進入到下一幀的目標跟蹤。以上算法的實現(xiàn)通過調(diào)用cvCamShift()函數(shù)完成。

      圖4 CamShift算法流程圖

      3.4 基于TCP/IP協(xié)議的視頻傳輸

      該USB攝像頭采用 V4L2的框架[7],V4L2的Video設(shè)備在用戶空間通過調(diào)用各種ioctl()函數(shù)來實現(xiàn)對攝像頭的設(shè)置,然后將采集的視頻數(shù)據(jù)進行H.264壓縮編碼,將壓縮后的視頻數(shù)據(jù)經(jīng)過WIFI模塊發(fā)送到無線網(wǎng)絡(luò)設(shè)備,然后采集終端的WIFI模塊通過訪問該無線網(wǎng)絡(luò)設(shè)備來獲得視頻數(shù)據(jù),再經(jīng)過H.264解壓縮之后就可以恢復(fù)出原始視頻數(shù)據(jù)。

      該無線模塊的實時視頻傳輸是基于TCP/IP協(xié)議[8],協(xié)議采用了層級結(jié)構(gòu),分別是網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層,每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。它主要是完成對遠程客戶端的連接以及取消連接的功能,并根據(jù)遠程客戶端的請求,將所需數(shù)據(jù)信息傳輸?shù)竭h程客戶端。在Linux下基于TCP的HTTP協(xié)議的數(shù)據(jù)傳輸流程如圖5所示。該數(shù)據(jù)傳輸?shù)木唧w步驟如下:首先要服務(wù)器創(chuàng)建socket()套接字函數(shù),調(diào)用bind()函數(shù)指定本地地址后監(jiān)聽并等待瀏覽器的請求,然后瀏覽器向服務(wù)器發(fā)送連接請求,這時候建立套接字的連接函數(shù)Accept()和Connet(),接著通過write()和read()函數(shù)實現(xiàn)數(shù)據(jù)的寫入和讀出功能,最后關(guān)閉套接字函數(shù)close()。

      圖5 TCP協(xié)議的流程圖

      4 上位機測試

      Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它主要應(yīng)用于嵌入式Linux系統(tǒng)的PAD或者智能手機平臺。本系統(tǒng)接收終端的上位機軟件就采用Qt開發(fā),選擇的開發(fā)環(huán)境是QtE-4.7.0版本。為了能夠讓視頻窗口和按鍵窗口在程序上顯示,編寫應(yīng)用框架類QWidget,接著通過QPainter類將接收過來的視頻數(shù)據(jù)不斷寫入,讓視頻實時顯示。最后按照信號與槽的機制編寫控制按鍵,控制視頻的打開、CamShift跟蹤、保存、停止、退出等按鍵功能,駕駛員通過選擇上位機界面上的按鈕來查看工地實時場景。實驗?zāi)M測試跟蹤吊鉤如圖6所示。

      圖6 吊鉤跟蹤視頻截圖

      5 結(jié)束語

      本文提出了基于CamShift跟蹤算法的塔吊無線視頻監(jiān)控系統(tǒng)。主要從視頻采集、CamShift跟蹤算法以及視頻無線傳輸?shù)确矫骊U述了系統(tǒng)設(shè)計思路。該系統(tǒng)的優(yōu)點在于接收終端的便攜式設(shè)計相對于體積龐大的PC機來說使用起來十分方便,同時價格優(yōu)勢也相當(dāng)明顯,為整個系統(tǒng)的設(shè)計節(jié)省了很大成本。在顯示效果方面,視頻傳輸穩(wěn)定可靠,實時跟蹤準確,有效地解決了駕駛員的視覺盲區(qū)以及視覺疲勞問題,對操控塔吊起了很大的輔助作用,不但提高了作業(yè)的安全性,同時也提高了作業(yè)效率。

      [1]曹理發(fā),尹勇,劉恒輝.基于ARM和DSP的視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J].電子器件,2009,32(1):213-217

      [2]李文江,王紅飛,侯玉峰.基于S3C6410的嵌入式膠帶運輸機監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2010(12):74-79

      [3]蔣昌茂,劉洪林.基于WIFI的無線IP攝像頭的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2010,21:55-57

      [4]郭巧云,許雪梅,李岸.基于ARMll的無線視頻監(jiān)控系統(tǒng)的設(shè)計[J].計算機測量與控制,2010,18(8):1786-1791

      [5]伍友龍,朱志勇.基于CamShift與Kalman的目標跟蹤算法.[J]微計算機信息,2010,26(3):23-25

      [6]冀治航,陳家新,黎蔚.基于空間直方圖的CamShift目標跟蹤算法.[J]微電子學(xué)與計算機,2009,7(26):194-197

      [7]王剛,毛劍飛,田青.基于ARMll的無線視頻監(jiān)控系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2011,20:18-22

      [8]何鵬舉.基于Web服務(wù)的無線網(wǎng)絡(luò)節(jié)點傳感器研究[J].傳感技術(shù)學(xué)報,2009,22(11):1634-1638

      猜你喜歡
      吊鉤塔吊終端
      海上風(fēng)電有位“吊鉤大王”
      華人時刊(2023年11期)2023-07-29 06:27:38
      兒童主動學(xué)習(xí)行為的分析及支持策略——以扭扭積木《塔吊》為例
      天津教育(2023年2期)2023-03-14 07:35:34
      X美術(shù)館首屆三年展:“終端〉_How Do We Begin?”
      多標段工程群塔布置與安裝
      四川水泥(2020年8期)2020-08-06 08:07:56
      起重機吊鉤定位裝置
      山西冶金(2020年3期)2020-07-15 04:15:04
      通信控制服務(wù)器(CCS)維護終端的設(shè)計與實現(xiàn)
      塔吊檢查
      超高層建筑塔吊選型和布置分析
      多功能北斗船載終端的開發(fā)應(yīng)用
      電子制作(2016年15期)2017-01-15 13:39:14
      Q48 懸鏈式拋丸清理機爬坡吊鉤的結(jié)構(gòu)設(shè)計
      招远市| 襄汾县| 东辽县| 霍城县| 高阳县| 浮山县| 新疆| 阿鲁科尔沁旗| 桐城市| 远安县| 怀柔区| 郎溪县| 昆明市| 定陶县| 烟台市| 昌都县| 忻城县| 南和县| 婺源县| 皮山县| 双江| 博罗县| 巴塘县| 龙海市| 沛县| 睢宁县| 治多县| 华阴市| 武威市| 甘孜县| 莱阳市| 资中县| 青州市| 永城市| 华安县| 三穗县| 绍兴县| 黄平县| 海门市| 绥化市| 樟树市|