華壯 侯楊陽 陳敏杰 朱浩宇 鈕寧寧
(江蘇第二師范學院物理與電子信息工程學院 江蘇省南京市 210000)
近年來,隨著計算機技術和網絡技術的快速發展,視頻監控技術在停車場、地跌、機場、商城、寫字樓等重要公共場所得到了廣泛的運用,可以說各行各業以及人們的日常生產生活都離不開視頻監控技術[1]。隨著視頻監控技術的日益成熟,也越來越成為計算機視覺研究領域中的熱點。各大高校、教育機構應人才培養需求設置了相關課程和課題設計,因此,高校大學生在校期間非常有必要接觸到此類此類項目的開發設計,通過此類項目的教學實訓,不僅可以提高學生對所學知識的理解程度,更能夠充分鍛煉動手實踐操作能力,很大程度上提高了專業技術競爭力,對學生的職業規劃起到了積極的作用。另外,該系統也可直接應用于企業中的工程應用或實驗測試中,具有一定的社會實用價值。
該系統主要分為三大模塊,分別為串口通訊、云臺控制模塊、視頻監控模塊。云臺控制模塊是視頻監控的核心,是通過串口通訊,基于Pelco-D/Pelco-P 控制協議,將控制指令發送給FY-SP1510 輕載智能變速云臺設備,設計對應控件實現對云臺設備360°方向控制,并可進行云臺任意角度的設置;視頻監控模塊主要實現對搭載相機的圖像采集捕捉與顯示。
本文設計用到了MFC 中的一種ActiveX 控件MSComm,該控件提供了與下位機通信的接口來支持對串口的訪問[2],在串口有數據到達時,促發相應的事件響應,在事件函數里進行數據的讀取。基本步驟如下:
(1)注冊MSComm 控件;
(2)添加MSComm 控件;
(3)添加控件變量;
(4)串口信息配置及打開。
云臺,視頻監控系統的轉向裝置,云臺的轉動角度決定了視頻監控的視野范圍。本系統所選用的智能變速云臺基本性能參數為:RS422 通信接口,水平旋轉角度0~360°連續旋轉,俯仰-60~ +60°,水平0.01~30°/S,俯仰0.01~15°/S,通信波特率有2400/4800/9600/19200 bps 可選,通訊協議支持Pelco-D、Pelco-P。
計算機通過串口RS422 并利用RS485 轉換器與云臺解碼器相連接,云臺和云臺解碼器之間通過控制電纜相連,計算機通過串口向解碼器發送數據,通過解碼器翻譯電平指令使得云臺執行相應動作[3]。本系統解碼器選定Pelco-D 為控制云臺通信協議。
數據格式為:1 位起始位、8 位數據位、1 位停止位,無校驗位。波特率:9600bps。Pelco-D 采用一個數據包的格式傳輸,所有數據均采用十六進制,一般用于矩陣和其他設備之間的通信[3],內容包括云臺控制命令,攝像機控制命令、輔助控制命令、預置位設置和調用命令。其基本命令格式如表1 所示。
FF:同步字節,始終為0xFF;
Add:地址位,取值范圍為0x00~0xFF,默認地址1;
Cmd1、Cmd2:命令碼;
Data1、Data2:數據碼;
Checksum:校驗位,Checksum=add + Cmd1 + Cmd2 + Data1 +Data2。
本云臺的基本控制指令如圖表2 所示。
在控制指令中,Byte3 決定執行的指令,DataH、DataL 為指令對應的數值的高字節和低字節。另外,還包括變倍加減控制、聚焦遠近控制、光圈開關控制以及巡航停留時間查詢回傳、守望時間查詢回傳等控制指令,則作為二次開發設計的預留功能。
本系統中,對云臺的基本控制共分為三個模塊:連續轉動方向設置模塊、自由角度查詢與設置模塊、線掃控制模塊。在MFC 對話框中設計控件按鈕,添加對應的響應函數。
3.2.1 連續轉動方向設置模塊
在該模塊中,通過上下左右以及斜反向的方向鍵從而控制云臺的上下左右以及左上、左下、右上、右下方向的轉動,其中轉動速度的大小可在參數中設定和修改,從而實現對監控場面的全方位觀看。
本云臺水平速度和俯仰速度級數在取值范圍內可設定1~64級,云臺上下左右方向轉動的實現,都是單命令響應,也就是每個按鍵都只需要執行一條指令;而對于斜方向的控制則是兩個方向指令疊加的結果。
3.2.2 自由角度查詢與設置模塊
在視頻監控過程中,為方便遠程管理和觀看,除了連續轉動控制之外,還需要針對特定點進行觀測,這就需要監控終端具備對云臺任意角度的設置與查看功能。本模塊中,從兩個方向來確定云臺的位置:俯仰角度和水平角度,分別包含設置和查詢兩個功能。在處理俯仰角度-60°~0 時,需要注意一點,要將其轉變為十六進制,其默認的數據應是反方向對應的角度。

表1:Pelco-D 協議命令格式

表2:云臺控制信息
3.2.3 線掃控制模塊
控制云臺在水平方向的一定范圍內,以一定的速度來回掃描。云臺搭載相機后,則實現攝像機在左、右限位之間以設定的速度進行水平自動往復掃描。
本系統搭載測試用工業相機視頻接口為最普遍的AV 接口,有效像素1280(H)*1024(V),配合Microvision 工業高清圖像采集卡MV-800,將視頻信號轉換為CPU 可以接受的信號,再通過上位機軟件調用OpenCV 相應處理函數來實現對監控視頻流的采集和編輯。
利用Microvision 圖像采集卡獲取視頻信號,前提是要配置好相應的編譯環境:
(1)將SDK 安裝目錄下的Inc 和Lib 目錄路徑分別加入本工程設置的“C/C++-Preprocressor-Additional include directories”和“Link-Input-Additional library path”中。
(2)將LibDsstream.lib 文件加入工程設置的“Link-General-Object/library module”中。
(3)將IncDSStream.h 文件加入工程,并“#include DSStream.h”中。
(4)將ExeDSStream.dll 文件拷入系統目錄中。
根據系統需求編寫代碼,本模塊中的難點在于從SDK 回調函數中獲取的原始圖像數據的格式轉換,這里獲取DIB 數據后,調用了OpenCV 中的構造函數Mat,將圖像轉換為Mat 格式,并在MFC 對話框中picture 控件上輸出。


本系統的開發環境是基于Windows 平臺下的visual studio 2012,配置OpenCV2.4.10,搭建MFC 對話框創建的監控終端控制界面。整體控制界面如圖1 所示。

圖1:系統界面
基于MFC 對話框,本文實現了通過串口通信對智能變速云臺設備的控制,并對搭載相機通過圖像采集卡,結合OpenCV 來獲取監測圖像,最終實現一個完整的視頻監控上位機控制終端。本系統可以直接應用于企業中的工程應用或實驗測試;因本身具備開源性,易于進行二次開發,也非常適合作為教學實訓平臺用,具有較高的教學價值和社會應用價值。