吳培浩,李 迪,張 成,翁瀟文
(華南理工大學 機械與汽車工程學院,廣州 510640)
智能相機管理系統的設計與實現
吳培浩,李 迪,張 成,翁瀟文
(華南理工大學 機械與汽車工程學院,廣州 510640)
針對傳統的文本編程效率低下、智能相機只允許本地監視以及監視界面固定等問題,自主研發了一套集圖形化編程、任務運行、數據監控等功能于一體的智能相機管理系統;分析了智能相機管理系統在編程、運行與監視過程中的功能需求,并進行系統結構的劃分和設計;構建圖形化圖像處理單元、可視化編程界面以實現圖形化編程功能;采用網絡通訊方式,實現智能相機配置過程的同步、遠程監控以及與其他設備的數據交互;討論了系統中的數據管理模型;最后,通過應用實例驗證該系統在工業生產中的可行性;驗證結果表明,該系統能縮短開發時間,降低用戶開發成本,并能對生產線上的智能相機進行有效的管理。
智能相機;軟件設計;圖形化編程;界面組態
隨著計算機技術的發展和工業自動化水平的提高,自動檢測技術得到越來越廣泛的重視和應用,智能相機的應用也越來越廣泛[1-2]。作為自動化裝備的“眼睛”,智能相機應在不同的應用場景下定義不同的圖像處理應用,以滿足不同的需求。若采用傳統的文本編程方式,開發人員需要深入了解圖像處理算法接口,掌握相關圖像處理的知識,這勢必會增加編程難度和出錯率[3]。此外,智能相機資源的管理、檢測結果和狀態的監視,都是智能相機所必備的功能。在傳統的本地監控方式中,監控設備與智能相機以電纜連接,這迫使工作人員難以實現遠程操作和監視,人力成本較高,且監控界面固定,難以定制。
針對當前的現狀和市場需求,本文采用面向對象的編程思想,以MicrosoftVisual Studio 2012為開發平臺,設計并實現了一套集圖形化編程、任務運行、遠程監控于一身的智能相機管理系統。該系統以圖形化編程方式實現了對智能相機的圖像處理任務的編程定義、對監視設備界面布局的自由組態、對監控界面數據的自定義,實現了編程過程中圖像處理仿真結果的實時反饋,實現了圖像處理任務在運行環境中的準確執行以及遠程設備對智能相機的監視和操控。圖形化編程、編程與仿真并行的編程方式、遠程監控的監控方式,都節約了相機開發管理的人力物力成本,有利于提高生產效率及其自動化程度[4]。
智能相機管理系統設計前,需要對智能相機使用管理過程進行分析,總結出其相關的功能需求,其功能需求如下:
1)圖形化的相機開發工具。智能相機處理算法多種多樣,通過算法的組合與參數調整可以生成不同的應用實例。由于算法種類繁多,若以傳統的文本編程模式進行,勢必增加二次開發者的負擔,導致開發效率下降和出錯率增加。因此,開發工具應擁有簡單友好的圖形化開發環境,提供算法模塊的圖形化編程模式和可視化的參數設定、信息錄入功能。
2)相機監視。工業智能相機應用于生產中的檢測識別環節,對于應用場景,需要建立不同的檢測識別應用;針對不同的應用,監視設備監視數據對象、來源也應做出不同的調整;對于同一應用而言,不同的監視級別對數據的需求也有差異。智能相機需提供可定制的數據監視模式,由用戶根據應用場景定制監視數據,滿足不同應用環境的監控需求。
3)仿真環境與獨立運行環境。仿真環境在編程過程中實時反饋結果。幫助用戶調整編程參數以獲得合適的圖像處理任務。而運行環境內嵌于智能相機中,在用戶啟動智能相機后實現對相機資源的管理、圖像處理任務的執行。用戶完成編程工作后,通過網絡通訊或文件交互的方式實現編程工具與運行環境的數據交互,實現智能相機應用程序的導入。
根據智能相機管理系統的需求分析和應用情況,將總體結構按照功能劃分為設備層、配置層、監控層三部分,三者關系和交互如圖1所示。

圖1 系統結構組成
1)設備層:主要由安裝在生產線上或機械臂上的智能相機與其他外部設備如機器人等組成。作為系統的核心執行設備,智能相機負責捕捉生產線上圖像信息,根據用戶定義的處理任務對所得圖像進行處理,捕獲圖片特征信息,并將處理結果傳輸至其他外部設備。
2)配置層:包括運行于PC機上的圖形化相機編程工具和人機交互界面(Human Machine Interface, 簡稱HMI)組態工具。配置層負責對設備層、監控層相關信息進行定義。智能相機編程工具主要定義智能相機的硬件參數、圖像采集模塊,設計圖像處理應用、設定算法模塊參數、定義設備對外通信等;HMI組態工具負責對監控界面進行組態,定義監視數據,設計界面消息響應以及控制指令輸出。
3)監控層:主要為工控機、觸摸屏或其他監視設備。HMI組態工具針對不同的圖像處理任務創建相應的監控界面,配置結果由監視器解析運行,通過預定義的界面元素和數據接口,對設備層進行數據監視和指令驅動。
圖形化編程軟件是用戶編輯圖像處理應用和監控設備HMI的平臺,其設計主要包括智能相機配置工具和HMI組態工具的設計。本軟件采用圖形化編程思想,旨在為用戶提供一個友好的編輯環境,方便用戶進行應用開發。下文以智能相機配置工具為例,進行設計方案分析。
2.1.1 圖元設計與管理
智能相機配置工具完成相機參數、圖像采集、圖像處理、數據通訊等方面的設置。圖像處理應用的編輯是配置工具一大主要功能。為了方便用戶使用,采用圖形化的編程方式。圖像處理應用可由多個圖像處理任務組合而成,圖像處理任務由不同的處理流程疊加而成。傳統的文本編輯方式是直接調用圖像處理函數進行設置,而圖形化編程方式則是將調用圖像處理函數部分封裝起來,以圖元和圖形化界面向用戶開放,滿足用戶需求。
圖元是一種具有輸入和輸出的可視化組件。在智能相機配置工具中,圖像處理任務以樹形呈現,而樹節點本身是一種圖元對象,集合了圖像、坐標與其他數據的輸入輸出端口[5],如圖2所示。

圖2 圖像處理流程圖元
設計時,將圖像處理算法抽象封裝成圖元對象,對內管理數據結構、處理輸入數據,對外經由輸出端口輸出處理結果。而邏輯節點被抽象成控制圖元,形成樹形分叉,使得樹形結構的組合更為自由多變,滿足應用需要。CImgTool類是圖元結構的父類,其繼承于MFC提供的CObject類,包含了所有工具的通用數據結構,并為所有算法工具定義了抽象的應用接口。圖像處理工具直接或間接派生于CImgTool類,對父類中定義的抽象接口如WriteMemory()進行了具體實現,將特有的屬性數據封裝于其內部,并將參數的設置、數據流動設置等以界面輸入的形式呈現。
圖元對象統一由CImgTool*指針統一管理調度,利用MFC提供的CTypedPtrArray模板類進行圖元對象指針的管理。使用時,充分發揮了C++面向對象編程的多態性,利用基類指針CImgTool*調用抽象接口函數,動態實現對相應具體函數接口的調用。
圖元對象的配置是在上位機中進行,而圖像處理應用的運行是在設備中實現,設備內部系統與上位機有一套一一對應的隱含圖元對象,保存著圖元對象的相關數據。配置相關接口的實現在上位機中進行,而圖像處理接口的具體實現是在相機內部進行,并通過通訊方式將結果同步到上位機圖元對象內部數據中。其數據流如圖3所示。

圖3 配置過程數據流動
2.1.2 界面與配置
圖形化編輯環境的界面開發是在MicrosoftVisualStudio 2012平臺上進行,利用MFC庫提供的各類函數與框架進行界面設計,簡化設計工作,提高設計效率。
軟件的主界面設計采用MFC提供的CFrameWndEx框架類進行搭建,除了提供常見的工具欄操作外,界面主編輯區采用界面分割技術,將主界面分割成工具箱、應用編輯區和參數配置顯示區,在編輯時避免了彈窗式出現的多窗口層疊問題,使界面更為簡潔美觀。
工具箱采用抽屜式布局,利用鼠標點擊工具抽屜的方式進行工具箱啟閉操作。打開工具抽屜時,抽屜內工具以列表形式呈現,通過拖放至應用編輯區,實現圖像處理流程的創建[6]。為了避開彈窗式的層疊界面,右側參數配置顯示區采用界面復用方式實現。當選中任務樹的某一節點,右側界面根據節點信息動態創建相應的數據界面,以供用戶配置。參數配置區由CDispPaneContainer類管理,設置導航欄。根據用戶選中對象,由導航欄生成字符串ID,采用簡單工廠模式對界面進行實例化,從而完成界面的切換,實現配置區域的復用。
通訊模塊在智能相機管理系統的配置、管理中占據著舉足輕重的作用,它是確保數據傳輸的可靠性、實時性、穩定性的重要環節。本系統主要涉及的通訊包括智能相機與配置工具通訊、與監控層之間的通訊、與其他外部設備的通訊。
2.2.1 與配置工具通訊
在智能相機管理系統設計過程中,智能相機的運行功能和配置功能被分開,使兩者在設計中更為獨立合理。
配置工具是對相機執行功能進行設置定義的部分,只完成相機配置工作。配置結果的有效性和準確性由智能相機(或仿真器)實時處理和反饋進行驗證。兩者之間通過以太網連接,采用TCP/IP網絡協議進行數據實時傳輸:用戶使用配置工具進行編程前,首先需連接智能相機(或仿真器)。編程時,配置工具將編程結果同步下載至智能相機(或仿真器),智能相機(或仿真器)根據用戶編程結果,執行任務并將處理后的數據傳輸至配置工具并顯示。用戶可根據反饋結果,調整參數,以滿足工業實際應用的需求。
由于考慮到通訊的實時性和獨立性要求,智能相機內部開辟一個用于與配置工具通訊的專用線程,在配置工具中指定通訊智能相機的網絡IP地址即可實現連接。同時,通訊過程采用非阻塞的通訊方式,設置超時限制,以維護系統的穩定性。
2.2.2 與監控層通訊
智能相機作為監視設備的監視對象,是監視設備的數據來源和交互對象。監視過程采用遠程監視和操控的方式進行。監視設備通過網絡通訊向智能相機發起連接,發出數據請求指令和驅動指令,并獲取和顯示由相機返回的監視數據,從而實現對相機的監視與操控,同時,基于網絡通訊的監控方式也實現了監控設備與智能相機物理連接上的分離。
2.2.3 與其他設備通訊
智能相機相當于“眼睛”,主要功能為獲取圖像數據信息,并通過處理圖像形成結論并指使其他設備完成工作,如利用智能相機拍照和識別生產線上的物品,并驅動機械手完成對物體的抓取和分類。因此,與其他設備的通訊也是智能相機一大必備功能。
為了實現這一功能,智能相機管理軟件與硬件協調設計,提供網絡通訊、I/O口的輸入輸出、EtherCAT高速通訊協議、串口通訊、USB通訊等多種通訊方式。智能相機管理軟件將通訊相關的接口封裝成與其他處理工具相似的通訊圖元。編程時,拖放通訊圖元到任務樹中,從界面中設置通訊內容、通訊格式和目標機信息,即可完成對相機通訊模塊設置。運行時,由相機根據通訊類型和通訊信息,實現與其他設備的通訊。
運行環境的數據模型定義了數據的組織管理方式、數據流動形式,主要涉及3個方面:算法模塊數據、節點間數據流動、監控數據流。具體實現如下:
1)模塊化算法工具。在圖形化配置工具中,各種算法抽象封裝成圖元,將算法模塊的相關參數和中間數據隱藏在圖元內部,提供數據修改接口,與界面輸入對接,完成參數配置。運行環境為了與配置工具對接,也采用面向對象的管理方案,將算法分散并封裝成不同的類。圖像處理應用分若干任務模塊,每個任務模塊由若干算法模塊組成。任務的執行被拆分成若干子流程,分別由不同算法模塊負責執行,實現高內聚低耦合的特點,提高了算法數據的安全性、算法功能的復用性。
2)節點間數據流。對于圖像處理任務而言,任務中各算法模塊之間存在許多聯系,前驅工具產生的數據通常作為后驅工具的輸入,包括圖像、坐標系或某些其他數據。算法工具輸入輸出數據結構在類中的定義如下所示:
class CImgTool: public CObject
{
protected:
const CImage* m_pImgInput;//圖像輸入
const UserCoordinates* m_pCoordSys;//坐標輸入端口
std::list
std::list
std::list
std::list
std::list
}
算法工具中封裝著數據端口的輸入端和輸出端,構建任務時,由系統自動為其搭建連接,形成完整的數據流,保證算法工具數據完整和正常運行。
3)監控數據流。運行環境是與監視器通訊過程中的服務端。通訊過程分兩部分:當監控設備處于配置階段時,運行環境通過調用函數GetMonitorList()獲取數據通道并通知HMI組態工具。當監控設備處于運行階段,運行環境根據數據請求指令,調用GetMonitorData()函數獲取監控數據,以供監控設備監視。
使用本文研制的智能相機管理系統,以分揀系統為例,某生產線上利用智能相機,對傳送帶上工件顏色進行檢測,對指定顏色產品進行分類并利用機械臂進行抓取和分類,同時統計各類產品的數量。針對這一任務,設計圖像處理任務和監控界面:捕捉工件圖片,對輸入圖片做濾波處理;查找指定顏色的工件,若查找成功,則將工件的中心坐標轉化為機械手空間坐標后傳輸至機械手,由機械手完成抓取分類工作,并統計個數;若查找失敗,即無目標工件,則放棄抓取。編程結果如圖4所示。

圖4 工件分揀編程界面
編程完成后,將程序導入智能相機中,啟動監控設備,利用監控設備驅動智能相機運行,并監視其運行結果,監控界面如圖5所示。

圖5 工件分揀監控界面
本文基于圖形化編程思想與網絡通訊方式,開發了一套智能相機管理系統。該系統集相機圖形化編程、相機運行管理、相機監控等功能于一身,通過拖放式的編程方式進行智能相機編程,通過網絡通訊方式實現數據同步、遠程監控等,為用戶提供一套操作簡單便捷、功能完整的智能相機編程管理系統。經實驗驗證,該系統在生產應用中具有良好的實用價值,值得進一步推廣應用。
[1] 裴志軍, 曹繼華, 張驥祥. 嵌入式機器視覺中的智能相機技術[J]. 天津工程師范學院學報, 2008, 18(2): 5-8.
[2] 劉 偉. 一種基于智能相機的機器視覺系統的設計[J]. 重慶工商大學學報: 自然科學版, 2013, 30(11): 66-69.
[3] 呂 敏, 沙 莎. 可視化編程數字圖像處理平臺的界面設計與實現[J]. 計算機系統應用, 2010, 19(9).
[4] 王騰騰. 基于圖編程的嵌入式機器視覺算法平臺研究[D]. 杭州:杭州電子科技大學, 2016.
[5] 楊林蛟, 張 鑫. 基于JGraph的圖像處理編程平臺的實現[J]. 機電工程, 2011, 28(8): 978-982.
[6] 楊林蛟, 張 鑫. 基于組件的醫學影像處理算法平臺的實現[J]. 微處理機, 2010(2): 97-100,104.
Design and Implementation of Management System of Smart Camera
Wu Peihao, Li Di, Zhang Cheng, Weng Xiaowen
(School of Mechanical and Automotive Engineering, South China University of Technology,Guangzhou 510640, China)
For the shortage of low efficiency of traditional programing method and the problems that smart camera can only be monitored by local monitor with fixed monitor interface, a set of smart camera management system was developed independently, which was a combination of graphic programming function, task running function and data monitoring function. Based on the functional requirements of programing, running and monitoring of smart camera thatwere analyzed, structure of the system was designed. Graphic image processing unit andvisual programming interface were built to realize graphic programing function while the data managemental model of system was also discussed. Finally, the feasibility of the system which was used on industrial manufacture was verified by using some examples. The results showed that the software reduces development time and lowers the cost of development, and could manage smart camera working on production line effectively.
smart camera; software design; graphic programming; configuration
2017-05-09;
2017-05-23。
國家科技支撐計劃資助項目(2015BAF20B01);廣東省科技計劃資助項目(2011B010300002,2016A010102008,2015B010101005,2014B090921003);廣州市科技計劃資助項目(201508030007,201604010064)。
吳培浩(1993-),男,廣東潮州人,碩士研究生,主要從事嵌入式系統、計算機應用方向的研究。
李 迪(1965-),女,山東青島人,教授,博士生導師,主要從事嵌入式系統、自動控制和機器視覺方向的研究。
1671-4598(2017)12-0180-04
10.16526/j.cnki.11-4762/tp.2017.12.047
TP391.4
A