劉澤桂,李 迪,王世勇,張春華
(華南理工大學(xué) 機(jī)械與汽車(chē)工程學(xué)院,廣州 510640)
?
圖像處理應(yīng)用組態(tài)開(kāi)發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
劉澤桂,李迪,王世勇,張春華
(華南理工大學(xué) 機(jī)械與汽車(chē)工程學(xué)院,廣州510640)
摘要:傳統(tǒng)的文本編程方式效率低下,無(wú)法滿足圖像處理應(yīng)用迅速增長(zhǎng)的需求,針對(duì)這個(gè)問(wèn)題,提出一種基于圖形化組態(tài)編程的開(kāi)發(fā)系統(tǒng);從功能和結(jié)構(gòu)上對(duì)系統(tǒng)進(jìn)行分析,著重討論編程環(huán)境的設(shè)計(jì)與實(shí)現(xiàn);采用組合模式管理應(yīng)用程序、迭代器模式實(shí)現(xiàn)遍歷,進(jìn)一步討論了編程環(huán)境的仿真運(yùn)行機(jī)制;基于MFC設(shè)計(jì)界面,通過(guò)一般-特殊結(jié)構(gòu)實(shí)現(xiàn)界面復(fù)用,利用策略模式實(shí)現(xiàn)程序樹(shù)的重建;使用OpenCV和動(dòng)態(tài)鏈接庫(kù)技術(shù)設(shè)計(jì)預(yù)定義函數(shù)集;最后,對(duì)運(yùn)行環(huán)境的數(shù)據(jù)模型做出了探討;實(shí)例驗(yàn)證,該系統(tǒng)能減少開(kāi)發(fā)時(shí)間,降低開(kāi)發(fā)難度,為圖像處理相關(guān)人員提供了一個(gè)簡(jiǎn)單友好的二次開(kāi)發(fā)環(huán)境。
關(guān)鍵詞:組態(tài);圖形化編程;圖像處理;組件技術(shù)
0引言
隨著計(jì)算機(jī)技術(shù)的發(fā)展,圖像處理技術(shù)得到越來(lái)越廣泛的應(yīng)用,圖像處理應(yīng)用程序的需求量隨之增加。然而,圖像處理是一個(gè)復(fù)雜的過(guò)程,圖像處理任務(wù)往往需要由多種算法協(xié)同完成工作[1],傳統(tǒng)的文本式編程要求開(kāi)發(fā)人員了解算法庫(kù)函數(shù)的接口,編寫(xiě)連接代碼,以形成完整正確的程序。這對(duì)初學(xué)者入門(mén)形成一定難度,同時(shí)也增加了開(kāi)發(fā)者的開(kāi)發(fā)難度。
針對(duì)市場(chǎng)需求和發(fā)展現(xiàn)狀不協(xié)調(diào)的矛盾,本文提出一種通用的面向圖像處理應(yīng)用的組態(tài)開(kāi)發(fā)系統(tǒng),將圖像處理算法封裝成圖形控件,通過(guò)圖形化組態(tài)的編程方式,形成圖像處理程序。圖形化編程具有程序結(jié)構(gòu)清晰、編程出錯(cuò)率低、組態(tài)較為靈活等優(yōu)點(diǎn),通過(guò)這樣的方式,軟件能降低初學(xué)者入門(mén)門(mén)檻,減少開(kāi)發(fā)人員的開(kāi)發(fā)時(shí)間和開(kāi)發(fā)難度,從而提高開(kāi)發(fā)效率。
1功能和結(jié)構(gòu)分析
1.1系統(tǒng)組成
組態(tài)開(kāi)發(fā)系統(tǒng)通過(guò)圖形化編程的方式形成應(yīng)用程序,輸出特定格式的數(shù)據(jù)文件,實(shí)現(xiàn)應(yīng)用程序脫離編程環(huán)境運(yùn)行。在這種模式下,應(yīng)用程序的編輯一般通過(guò)編程環(huán)境的交互界面實(shí)現(xiàn),應(yīng)用程序的運(yùn)行則依賴于運(yùn)行環(huán)境對(duì)數(shù)據(jù)文件的正確解析。系統(tǒng)的結(jié)構(gòu)組成及模塊間的相互聯(lián)系如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)組成
編程環(huán)境需要實(shí)現(xiàn)的部分功能如下:
1)應(yīng)用程序編輯:拖放圖元形成程序,利用交互界面配置算法參數(shù)。
2)應(yīng)用程序仿真:程序編輯過(guò)程中實(shí)時(shí)仿真運(yùn)行,通過(guò)顯示界面使當(dāng)前配置參數(shù)下的運(yùn)行結(jié)果可視化。
3)程序運(yùn)行監(jiān)視:在監(jiān)視面板中顯示輸入圖像及自定制監(jiān)視數(shù)據(jù)項(xiàng)的當(dāng)前結(jié)果。
4)數(shù)據(jù)文件生成:輸出圖形化編程形成的應(yīng)用程序,提供特定格式的數(shù)據(jù)文件,實(shí)現(xiàn)應(yīng)用程序脫離編輯平臺(tái)運(yùn)行。
5)工程存儲(chǔ):支持編程環(huán)境的工程存儲(chǔ)/打開(kāi)等功能。
數(shù)據(jù)文件主要由算法的配置參數(shù)、算法間的數(shù)據(jù)聯(lián)系、應(yīng)用程序的結(jié)構(gòu)組成等信息構(gòu)成。
運(yùn)行環(huán)境則用于解析數(shù)據(jù)文件、運(yùn)行應(yīng)用程序、執(zhí)行圖像處理任務(wù)。針對(duì)不同的運(yùn)行平臺(tái),可定制相應(yīng)的運(yùn)行環(huán)境,確保系統(tǒng)的可移植性。
1.2編程環(huán)境的功能結(jié)構(gòu)劃分
圖形化編程基于數(shù)據(jù)流可視化程序語(yǔ)言,利用預(yù)定義函數(shù)庫(kù)及圖形化語(yǔ)法,通過(guò)連接功能模塊圖元形成應(yīng)用程序[2]。一個(gè)典型的數(shù)據(jù)流可視化程序語(yǔ)言提供必需的數(shù)據(jù)結(jié)構(gòu)和預(yù)定義函數(shù)庫(kù),以支撐應(yīng)用程序設(shè)計(jì)時(shí)可能涉及的復(fù)雜計(jì)算[3]。在此基礎(chǔ)上,從功能和結(jié)構(gòu)上對(duì)編程環(huán)境進(jìn)行劃分[4],如圖2所示。
圖2 軟件的功能結(jié)構(gòu)
軟件運(yùn)行過(guò)程中,用戶通過(guò)界面和交互編寫(xiě)程序、配置工具,軟件內(nèi)部則根據(jù)用戶操作修改數(shù)據(jù)結(jié)構(gòu)集中的相關(guān)數(shù)據(jù);圖元對(duì)象調(diào)用預(yù)定義函數(shù)集的圖像處理函數(shù)進(jìn)行仿真運(yùn)行,并將結(jié)果在界面中顯示出來(lái),實(shí)現(xiàn)編程過(guò)程中當(dāng)前結(jié)果的實(shí)時(shí)顯示。
2關(guān)鍵技術(shù)及實(shí)現(xiàn)
2.1數(shù)據(jù)結(jié)構(gòu)集
數(shù)據(jù)結(jié)構(gòu)集定義了軟件必要的數(shù)據(jù)結(jié)構(gòu),描述圖元對(duì)象、圖形圖像在軟件中的存在形式,并以合理的方式管理應(yīng)用程序,為軟件提供數(shù)據(jù)基礎(chǔ)。
2.1.1應(yīng)用程序的管理
通常情況下,應(yīng)用程序呈樹(shù)形結(jié)構(gòu),設(shè)計(jì)時(shí),將分支、循環(huán)等復(fù)雜程序結(jié)構(gòu)抽象成邏輯控制圖元,程序流程視為邏輯控制圖元的子分支,則組件對(duì)象組成分支輔助圖元,分支輔助圖元組成邏輯控制圖元,邏輯控制圖元本身也是一個(gè)組件,可以組成更大的結(jié)構(gòu)。這樣一來(lái),形成一種典型的“部分-整體”的層次結(jié)構(gòu),采用組合模式[5]進(jìn)行設(shè)計(jì),使客戶區(qū)對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。
組合模式的關(guān)鍵在于組件對(duì)象的抽象基類,此處為CImgTool類,簡(jiǎn)單的算法圖元以及復(fù)雜組合對(duì)象都派生于CImgTool。設(shè)計(jì)時(shí),在基類中定義組合對(duì)象和單個(gè)對(duì)象共同的操作接口,如串行化接口函數(shù)Serialize()等。實(shí)現(xiàn)時(shí),組合對(duì)象調(diào)用其子部件的接口,通過(guò)遞歸實(shí)現(xiàn)接口操作。
圖元對(duì)象派生于CImgTool基類,統(tǒng)一使用基類指針CImgTool*進(jìn)行管理,充分發(fā)揮面向?qū)ο蟮亩鄳B(tài)特性,通過(guò)動(dòng)態(tài)綁定實(shí)現(xiàn)具體接口的調(diào)用。對(duì)于指針的管理,則采用MFC模板類CTypedptrArray,為CObjeet類或其子類的對(duì)象提供類型安全保證,防止由不匹配的指針類型引起的錯(cuò)誤。定義如下:
CTypedPtrArray
CTypedPtrArray
CTypedPtrArray
2.1.2應(yīng)用程序的遍歷
應(yīng)用程序的數(shù)據(jù)存儲(chǔ)在文檔類中,文檔類提供相應(yīng)的訪問(wèn)列表元素的接口,實(shí)現(xiàn)不同的遍歷方式。采用迭代器模式,將對(duì)列表的訪問(wèn)和遍歷從列表對(duì)象中分離出來(lái),放入迭代器中。在迭代器類中定義訪問(wèn)列表元素的接口,負(fù)責(zé)跟蹤當(dāng)前的元素。迭代器基類的定義如下:
class CIteratorIf{
public:
CIteratorIf(const List* pList);
~CIteratorIf(void);
virtual void First(void) = 0;
virtual void Next(void) = 0;
virtual CImgTool* CurrentItem(void) const = 0;
virtual bool IsDone(void)const = 0;
private:
const List* m_pList;
stack
};
迭代器類與列表緊密耦合,實(shí)例化迭代器之前,需要提供待遍歷的列表,類中使用指針pList引用列表數(shù)據(jù)。First操作初始化迭代器,指向第一個(gè)元素;Next操作將當(dāng)前指針推進(jìn)一步,指向下一個(gè)元素;IsDone操作檢查是否遍歷結(jié)束;CurrentItem操作返回當(dāng)前元素。
將遍歷算法封裝在迭代器內(nèi)部,不同類型的迭代器有不同的實(shí)現(xiàn)方式。以完全遍歷迭代器為例,F(xiàn)irst操作將m_ImgToolList的元素依次壓入棧中;Next操作判斷棧頂元素是否為控制圖元,若是,則當(dāng)前元素出棧,再依次將m_Branchs中輔助圖元的子組件列表m_Branch中的元素壓入棧中,否則,則直接彈出當(dāng)前元素。使用迭代器時(shí),偽代碼為:
CIterator it = CreateTraverslIter();
for (it.First(); !it.IsDone(); it.Next()){
do something with CurrentItem();
}
2.1.3仿真運(yùn)行機(jī)制
仿真運(yùn)行操作從文檔中讀取數(shù)據(jù),解析出應(yīng)用程序的邏輯結(jié)構(gòu),進(jìn)行圖像處理。軟件的仿真運(yùn)行機(jī)制如圖3所示。
圖3 程序仿真運(yùn)行流程圖
其中任務(wù)列表進(jìn)行最外層遍歷,控制圖元子流程則通過(guò)組合模式的Process()接口進(jìn)入。
2.2界面與交互
界面與交互定義了應(yīng)用程序的可視化形式及編程形式,提供清晰明了的圖形用戶界面,使應(yīng)用程序直觀可視,編程操作簡(jiǎn)單方便。
2.2.1軟件框架及主界面
在可視化編程環(huán)境下進(jìn)行人機(jī)界面的開(kāi)發(fā),能簡(jiǎn)化設(shè)計(jì)工作,顯著提高開(kāi)發(fā)效率[6]。VS2012平臺(tái)及MFC框架提供了一個(gè)這樣的編程環(huán)境,在此基礎(chǔ)上進(jìn)行開(kāi)發(fā)。結(jié)合MFC的文檔/視圖架構(gòu)和基于對(duì)話框程序兩種框架的優(yōu)勢(shì),基于對(duì)話框進(jìn)行設(shè)計(jì),在應(yīng)用程序類中引入文檔類,在文檔類中實(shí)現(xiàn)數(shù)據(jù)的管理,從而既實(shí)現(xiàn)數(shù)據(jù)和數(shù)據(jù)顯示的分離,又能以“所見(jiàn)即所得”的方式設(shè)計(jì)界面,簡(jiǎn)便直觀。
軟件主界面基于框架窗口CFrameWndEx進(jìn)行搭建,使用工具欄、窗口分割、??看翱诘燃夹g(shù)形成主界面,使用抽屜式菜單分類顯示圖像處理工具庫(kù),主界面布局如圖4所示。
圖4 軟件主界面
2.2.2一般-特殊結(jié)構(gòu)實(shí)現(xiàn)界面復(fù)用
軟件中,某多個(gè)界面具有許多共同特征,設(shè)計(jì)時(shí),采用一般-特殊的結(jié)構(gòu),將共同屬性和操作抽象成具有一般性的基類,特殊類繼承一般類,從而實(shí)現(xiàn)界面的復(fù)用,減少重復(fù)代碼。
以配置界面為例,結(jié)合泛型編程的思想,將配置界面抽象成通用容器類,通過(guò)構(gòu)造函數(shù)傳參實(shí)例化具體的配置界面對(duì)象。抽象時(shí),需要消除配置界面間的差異,主要解決單選按鈕的顯示文本和切換面板消息回路這兩個(gè)問(wèn)題。通用容器類部分定義如下:
class CDispPaneContainer : public CMyFormView
{
public:
CDispPaneContainer(CImgTool* pImgTool, const std::vector
virtual ~CDispPaneContainer();
private:
std::vector
CTypedPtrArray
CMyFormView* m_pChildPane;//當(dāng)前配置面板
void OnRBnClk(); //自定義BN_CLICKED消息響應(yīng)函數(shù)
virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); //消息路由函數(shù)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //設(shè)置窗口
……
};
用參數(shù)IDList在資源視圖的String Table中預(yù)定義單選按鈕的字符串ID組,容器類在OnCreate()函數(shù)中通過(guò)字符串ID和LoadString()函數(shù)獲得按鈕相應(yīng)顯示文本;改寫(xiě)OnCmdMsg()消息路由函數(shù),捕捉單選按鈕的BN_CLICKED消息,并分發(fā)給自定義響應(yīng)函數(shù)OnRBnClk(),通過(guò)簡(jiǎn)單工廠函數(shù)實(shí)例化相應(yīng)的配置面板對(duì)象,從而創(chuàng)建了切換面板的消息回路。
2.2.3策略模式實(shí)現(xiàn)程序樹(shù)的重建
文檔通過(guò)指針管理組件對(duì)象,重建時(shí),當(dāng)前指針指向?qū)ο蟮念愋筒煌砑庸?jié)點(diǎn)的策略有所差異,主要有普通算法結(jié)點(diǎn)、輔助結(jié)點(diǎn)、控制圖元結(jié)點(diǎn)3種不同的結(jié)點(diǎn)添加情況。
采用策略模式,將添加節(jié)點(diǎn)的方式封裝成一系列的策略,策略彼此間可以相互替換,客戶區(qū)以相同的方式調(diào)用不同的策略。策略模式類如圖5所示。
圖5 策略模式類圖
定義一個(gè)上下文類CInsertItemContext,類中用策略類基類指針m_pStrategy管理具體策略類,利用簡(jiǎn)單工廠方法在上下文類的構(gòu)造函數(shù)中實(shí)例化具體策略類。對(duì)于基本策略類CBaseInsertItem,添加結(jié)點(diǎn)時(shí),若前驅(qū)兄弟結(jié)點(diǎn)及兄弟結(jié)點(diǎn)的父結(jié)點(diǎn)不為空,則添加為后繼兄弟結(jié)點(diǎn);不然,則以程序樹(shù)當(dāng)前最后結(jié)點(diǎn)為父結(jié)點(diǎn)添加新結(jié)點(diǎn)。對(duì)于邏輯結(jié)點(diǎn)添加策略CLogicNodeInsert,則先按CBaseInsertItem類添加邏輯結(jié)點(diǎn),再依次添加輔助結(jié)點(diǎn)及相應(yīng)分支。輔助結(jié)點(diǎn)添加策略CAuxNodeInsert遍歷分支輔助圖元子組件列表m_Branch,再使用CInsertItemContext類,依次添加結(jié)點(diǎn)。
2.3預(yù)定義函數(shù)集
預(yù)定義函數(shù)集定義了通用、全面而高效的圖像處理算法庫(kù),預(yù)留了良好的擴(kuò)展接口,在算法層面為系統(tǒng)及應(yīng)用程序提供強(qiáng)大的支持。
OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),提供了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法,在此基礎(chǔ)上定制圖像處理算法庫(kù),可以縮短軟件開(kāi)發(fā)周期,并保證圖像處理算法的通用性和高效性。在VS2012平臺(tái)中通過(guò)動(dòng)態(tài)鏈接庫(kù)技術(shù)(Dynamic Link Library,DLL)調(diào)用OpenCV的庫(kù)函數(shù)前,需要在開(kāi)發(fā)環(huán)境中對(duì)項(xiàng)目進(jìn)行配置,若OpenCV安裝路徑為D:/Program Files,配置如下:
1)在屬性管理器的包含目錄項(xiàng)中添加OpenCV文件的include、opencv和opencv2三個(gè)文件夾的路徑:
D:/ Program Files/ opencv/ build/ include
D:/Program Files/opencv/build/include/opencv
D:/Program Files/opencv/build/include/opencv2
2)在庫(kù)目錄項(xiàng)中添加引入庫(kù)文件文件夾的路徑:
D:/Program Files/opencv/build/x86/vc11/lib
3)在鏈接器的輸入中添加附加依賴項(xiàng),使用OpenCV3.0時(shí),附加依賴項(xiàng)為opencv_world300d.lib、opencv_world300.lib等。
編程環(huán)境使用隱式鏈接的方式調(diào)用鏈接庫(kù),方便庫(kù)函數(shù)的使用,并且在軟件界面初始化時(shí)載入DLL,避免初次調(diào)用時(shí)因載入DLL導(dǎo)致操作遲滯而影響用戶體驗(yàn)。
3運(yùn)行環(huán)境的數(shù)據(jù)模型
運(yùn)行環(huán)境的數(shù)據(jù)模型定義了數(shù)據(jù)的流動(dòng)形式,主要涉及兩個(gè)方面:算法結(jié)點(diǎn)以及結(jié)點(diǎn)間的數(shù)據(jù)聯(lián)系。有兩種不同的解決方案:
1)面向過(guò)程:算法結(jié)點(diǎn)作為應(yīng)用程序的執(zhí)行步驟,封裝成函數(shù),應(yīng)用程序在主函數(shù)中調(diào)用子函數(shù),并對(duì)結(jié)點(diǎn)所依賴、所產(chǎn)生的數(shù)據(jù)統(tǒng)一進(jìn)行管理。
2)面向?qū)ο螅簩⑺惴ńY(jié)點(diǎn)抽象成類,在類的內(nèi)部獨(dú)立管理參數(shù)、算法間數(shù)據(jù)聯(lián)系等相關(guān)數(shù)據(jù)。應(yīng)用程序?qū)嵗Y(jié)點(diǎn)對(duì)象,通過(guò)調(diào)用接口函數(shù)管理對(duì)象。
采用面向過(guò)程的方案,則主函數(shù)幾乎承擔(dān)了程序的全部職責(zé),工程只由極少數(shù)的源文件以及相應(yīng)的頭文件和庫(kù)文件所構(gòu)成,構(gòu)建十分方便。然而,此方案中,主函數(shù)職責(zé)重大,代碼耦合度高,不利于程序的調(diào)試和維護(hù)。
采用面向?qū)ο蟮姆桨福瑒t數(shù)據(jù)管理的職責(zé)分散在各個(gè)算法類中,高內(nèi)聚低耦合,程序的封裝性、復(fù)用性、可維護(hù)性能得到更好的保障。然而,采用該方案進(jìn)行設(shè)計(jì),每個(gè)算法類都有各自的頭文件和源文件,工程較為龐大,缺少集成開(kāi)發(fā)環(huán)境時(shí),構(gòu)建過(guò)程相對(duì)比較麻煩。
對(duì)于圖像處理應(yīng)用而言,算法間存在數(shù)據(jù)聯(lián)系,尤其是圖像方面的聯(lián)系,前驅(qū)算法的輸出往往作為后繼算法的輸入。若采用面向過(guò)程的方案,對(duì)于每個(gè)輸出,主函數(shù)中都有相應(yīng)的數(shù)據(jù)緩沖區(qū),算法步驟或算法內(nèi)部輸出較多時(shí),數(shù)據(jù)緩沖區(qū)十分散亂,數(shù)據(jù)難以管理。綜合考慮,采用面向?qū)ο蟮姆桨高M(jìn)行設(shè)計(jì),并在PC機(jī)上開(kāi)發(fā)運(yùn)行環(huán)境,利用PC機(jī)資源豐富的特點(diǎn),使用各種集成開(kāi)發(fā)環(huán)境和工具輔助開(kāi)發(fā),解決工程構(gòu)建復(fù)雜的問(wèn)題。
4應(yīng)用示例
以LED固晶過(guò)程為例,某工序查找輸入圖像中LED晶元的個(gè)數(shù),若查找成功,則輸出目標(biāo)形狀的個(gè)數(shù)及位置;查找失敗,則不做處理,等待下一次觸發(fā)。針對(duì)該任務(wù),首先對(duì)輸入圖像進(jìn)行濾波去噪;然后對(duì)圖像進(jìn)行二值化處理,提取連通區(qū)域,去除無(wú)關(guān)灰度信息;最后根據(jù)輸入模板進(jìn)行形狀匹配。在編程環(huán)境中輸出應(yīng)用程序的數(shù)據(jù)文件,通過(guò)運(yùn)行環(huán)境執(zhí)行任務(wù),程序運(yùn)行結(jié)果正確,且與仿真結(jié)果完全一致。運(yùn)行時(shí)一次觸發(fā)的結(jié)果如圖6所示。
圖6 圖像處理任務(wù)執(zhí)行結(jié)果
5結(jié)束語(yǔ)
本文基于組態(tài)圖形化編程開(kāi)發(fā)了面向圖像處理應(yīng)用的二次開(kāi)發(fā)系統(tǒng)。該系統(tǒng)將圖像處理算法封裝成圖形控件,用戶通過(guò)拖放的方式編輯程序樹(shù),通過(guò)交互界面配置算法參數(shù),最終輸出應(yīng)用程序的數(shù)據(jù)文件,配合運(yùn)行環(huán)境執(zhí)行圖像處理任務(wù)。軟件操作簡(jiǎn)單,功能完備,界面友好,具有良好的工程實(shí)用價(jià)值,值得進(jìn)一步推廣應(yīng)用。
參考文獻(xiàn):
[1] 王建新, 陸煒妮, 王偉平. 基于組件的數(shù)字圖像處理仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 系統(tǒng)仿真學(xué)報(bào), 2004,16(6):1213-1216.
[2] 徐小良,劉陽(yáng) 等. 圖形化編程平臺(tái)的結(jié)構(gòu)設(shè)計(jì)及實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2001,37(4):4-5,8.
[3] 程釗, 張?zhí)煨? 盧海風(fēng). 基于圖形語(yǔ)言的圖像處理算法開(kāi)發(fā)環(huán)境模型[J]. 華中科技大學(xué)學(xué)報(bào):自然科學(xué)版, 2010:82-85.
[4] 鮑賢捷, 陳衛(wèi)東, 曹其新. 機(jī)器人圖標(biāo)化編程環(huán)境的設(shè)計(jì)及實(shí)現(xiàn)[J]. 機(jī)器人, 2006, 28(6):617-622.
[5] 殷飛, 丁維明. 組態(tài)軟件設(shè)計(jì)中的模式研究[J]. 計(jì)算機(jī)測(cè)量與控制. 2005,13(3):298-300.
[6] 邵維忠, 劉昕. 可視化編程環(huán)境下人機(jī)界面的面向?qū)ο笤O(shè)計(jì)[J]. 軟件學(xué)報(bào), 2002, 13(8):1494-1499.
Structure Design and Implementation of a Configuration System for Image Processing Application Development
Liu Zegui,Li Di,Wang Shiyong,Zhang Chunhua
(School of Mechanical and Automotive Engineering, South China University of Technology, Guangzhou510640, China)
Abstract:Given the fact that traditional programing method falls behind demand for image processing programs, this paper proposes a graphic-based developing system for image processing programing. Function and structure of the software are analyzed, as a part of which, programming environment is mainly discussed. Composite pattern is employed for program management, iterator pattern for traversal operation, and simulation mechanism is given afterwards. MFC, generalization-specialization structure and strategy pattern are adopted for interface design, interface reuse and program tree reconstruction respectively. OpenCV library and Dynamic Link Library technology are taken as support for predefined function set. At last, data model of the running environment is discussed. Examples show that the software reduces development time and lowers its difficulty, presenting a friendly secondary development platform for image processing.
Keywords:configuration; graphic programing; image processing; component technique
文章編號(hào):1671-4598(2016)02-0307-04
DOI:10.16526/j.cnki.11-4762/tp.2016.02.085
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A
作者簡(jiǎn)介:劉澤桂(1991-),男,廣東潮州人,碩士研究生,主要從事嵌入式系統(tǒng)、計(jì)算機(jī)應(yīng)用方向的研究。
基金項(xiàng)目:國(guó)家科技支撐計(jì)劃項(xiàng)目(2015BAF20B01);廣東省科技計(jì)劃項(xiàng)目(2015B010101005)。
收稿日期:2015-09-21;修回日期:2016-01-06。
李迪(1965-),女,山東青島人,教授,博士生導(dǎo)師,主要從事嵌入式系統(tǒng)、自動(dòng)控制和機(jī)器視覺(jué)方向的研究。