梁樹為
(西安電子科技大學電子工程學院,陜西西安 710071)
隨著計算機、通信和網(wǎng)絡技術的發(fā)展,用戶對圖像傳輸和存儲中的數(shù)據(jù)壓縮要求變得更高。圖像壓縮算法是圖像壓縮過程中的核心內(nèi)容。圖像壓縮傳輸后再解壓得到圖像質(zhì)量的好壞,直接用于評價壓縮算法的優(yōu)劣。因此,在研究算法時關于算法的測試評選過程必不可少。文中的算法評測軟件主要用于圖像壓縮算法研究過程中的算法測試以及算法對某些圖像和參數(shù)的效果差異的統(tǒng)計記錄。
軟件設計的算法質(zhì)量測評過程是:先進行大范圍遍歷測試,通過統(tǒng)計圖形或數(shù)據(jù)找出效果較好的參數(shù)組合,然后使用這些較好的參數(shù)進行測試,這次測試將保存解壓縮后的圖像數(shù)據(jù),可以進行主觀評價,最后得出結論,便于以后查詢。具體軟件流程圖如圖1所示[1]。
以數(shù)據(jù)為中心的分布式計算為主導思想,強調(diào)代碼的重用性,在整體上將軟件分為幾個部分,各個部分相互獨立,把通用對象單獨封裝,形成較為獨立的程序庫,可以在其他項目中調(diào)用[2]。
圖1 軟件流程圖
采用面向?qū)ο蟮乃枷氩僮鲾?shù)據(jù)庫,把數(shù)據(jù)對象化,就是使用類封裝同屬性數(shù)據(jù)集合,真正數(shù)據(jù)的使用者看不到數(shù)據(jù)的物理結構,僅僅能看到其中的邏輯關系。軟件依托SQL Server2000實現(xiàn)對測試數(shù)據(jù)的存儲和管理,將軟件用到的算法內(nèi)容、算法參數(shù)、圖像數(shù)據(jù)以及結果數(shù)據(jù)都交給數(shù)據(jù)庫維護[3]。
圖像壓縮算法以及各個輔助算法是獨立的可執(zhí)行文件,而且必須是DOS提示符下運行的無界面程序,軟件將不斷啟動執(zhí)行算法進程,遍歷執(zhí)行算法的所有參數(shù)組合。
軟件將以工程的形式來進行操作,它將包含軟件應用中所有的數(shù)據(jù)和設置。整個算法的評估過程和在其中用到、產(chǎn)生的各類數(shù)據(jù),都將以一個工程的形式進行保存,工程的概念將作為軟件的主框架來實現(xiàn)。
軟件實現(xiàn)大致分為三層:第一層,負責最底層的數(shù)據(jù)維護和算法執(zhí)行,具體包括數(shù)據(jù)庫的管理和測試算法的執(zhí)行進程。第二層,是將軟件執(zhí)行時存在于內(nèi)存中的數(shù)據(jù)維護起來的一些類,具體包括維護從數(shù)據(jù)庫中取出數(shù)據(jù)的工程數(shù)據(jù)管理類、算法數(shù)據(jù)管理類、圖像數(shù)據(jù)管理類以及保存查找行為所得到數(shù)據(jù)的算法列表類和工程列表類。第三層,就是軟件與用戶間的接口界面,主要負責接受用戶的輸入以及實時顯示軟件執(zhí)行進程。各層之間的關系如圖2所示[4]。
圖2 軟件結構層次圖
軟件根據(jù)各模塊實現(xiàn)功能的相似性和多樣性,可利用類的繼承性很好地將各個功能模塊表示出來,為后面其他模塊的擴展或修改提供了良好的結構基礎。
首先定義軟件中的多個基礎類,包括管理數(shù)據(jù)的數(shù)據(jù)管理類、負責查找功能的數(shù)據(jù)查找器以及保存查找結果的數(shù)據(jù)列表類和數(shù)據(jù)內(nèi)容類。然后根據(jù)不同數(shù)據(jù)的不同性質(zhì),從基礎類派生出各種派生類。它們雖然通過不同的方法實現(xiàn),但其具有很多相同的對外接口,這為后面模塊多態(tài)地調(diào)用各模塊功能提供了方便。其具體的繼承關系如圖3所示[5-6]。
圖3 類繼承關系圖
如圖4所示,軟件功能直接依賴于5個模塊,其中左邊3個模塊與軟件操作流程相關,有明顯的先后順序;右邊的兩個模塊屬于輔助模塊,向主要操作提供數(shù)據(jù)支持。
圖4 軟件功能模塊
工程管理模塊不僅負責對歷史工程的查找、查看和刪除操作,而且包含了對當前正在執(zhí)行工程的進度管理。因為軟件設計時將整個算法評測過程定義為一個工程,無論是評測過程中用到的算法、算法參數(shù),還是評測完畢后的算法執(zhí)行結果、結果統(tǒng)計篩選以及算法的執(zhí)行過程和與數(shù)據(jù)庫的交互,都將在工程管理的大框架下完成。工程查看界面將是軟件的主要界面,用戶在上面可以完整地看到工程的各項詳細內(nèi)容,并在其上進行工程編輯。
圖5 工程管理模塊流程圖
圖中描述了工程管理模塊的界面操作流程,從左邊的菜單開始,是用戶點擊菜單后出現(xiàn)的對話框。圖中體現(xiàn)出兩個主要界面,顯示工程列表對話框和查看編輯工程窗口。工程列表對話框提供查找功能,可以按照工程各項參數(shù)數(shù)據(jù)查找工程,支持在查找結果中再次查找。工程查看窗口是整個軟件的主窗口,工程打開后,該窗口被顯示出來,作為主窗口直到軟件關閉。
算法執(zhí)行模塊功能簡單,從數(shù)據(jù)庫中讀取參數(shù),然后執(zhí)行參數(shù)中指定的算法程序,最后把結果保存到數(shù)據(jù)庫中,并在界面上提示用戶。
算法執(zhí)行模塊有兩個類,狀態(tài)顯示對話框類和算法執(zhí)行線程類。其中狀態(tài)顯示對話框負責與用戶交互,向線程提供數(shù)據(jù),控制線程的執(zhí)行;而算法執(zhí)行線程類只負責執(zhí)行算法程序以及獲取執(zhí)行結果。算法執(zhí)行模塊的主要功能是啟動算法執(zhí)行線程,在軟件后臺執(zhí)行算法的所有遍歷,將結果隨時存入數(shù)據(jù)庫,并在界面上實時顯示執(zhí)行過程。該模塊主要將算法執(zhí)行時出現(xiàn)的錯誤或崩潰限制在模塊內(nèi),不使其擴散到軟件其他部分導致整個軟件的崩潰。
統(tǒng)計篩選模塊主要實現(xiàn)評測算法遍歷完畢后的數(shù)據(jù)分析工作。該模塊主要的操作對象是數(shù)據(jù)庫中的遍歷參數(shù)表,通過對該表的分析可以了解到算法在各種參數(shù)組合下的性能表現(xiàn)。軟件通過對某些結果值隨參數(shù)變化趨勢的觀察,可以客觀地做出對算法的評價。該模塊在界面上主要有兩個對話框組成:繪圖對話框和參數(shù)篩選對話框。
繪圖對話框主要用于顯示測試參數(shù)與測試結果的關系曲線圖,使算法測試用戶能夠直觀地觀察到算法的某些性能。通過繪制兩種參數(shù)的關系曲線圖,可以很快獲取算法在某些方面某些參數(shù)區(qū)間的優(yōu)劣性能。
參數(shù)篩選對話框主要是評價數(shù)據(jù)的統(tǒng)計,能讓用戶篩選需要的組合。其具體功能是將統(tǒng)計出符合的參數(shù)組合數(shù)據(jù)顯示在界面上。統(tǒng)計功能相當于查找,能夠讓用戶找到符合條件的參數(shù)組合。
算法管理是對待測算法和其他輔助算法程序的管理。本模塊實現(xiàn)了算法的添加、導入、查看和刪除功能。模塊中主要有5個對話框,這些對話框的關系如圖6所示,圖中歷史工程列表和工程查看兩個對話框是工程管理的對話框,不包括在算法管理模塊中。
圖6 算法管理模塊流程圖
添加算法對話框?qū)崿F(xiàn)了用戶添加算法的接口,用戶只需填入算法描述腳本文件即可。對話框打開指定的腳本文件,解析文件內(nèi)容,把解析正確的內(nèi)容顯示在對話框上。添加算法成功后,算法相關的各種數(shù)據(jù)將在數(shù)據(jù)庫的相應項目中保存,從而實現(xiàn)算法在數(shù)據(jù)庫的添加。
算法列表對話框?qū)崿F(xiàn)快速查找算法的手段,按一定條件查找符合的算法,并支持在結果中查找。查找成功后在對話框列表中顯示符合條件算法的名稱、版本、添加時間等基本內(nèi)容。
算法詳細內(nèi)容對話框查看對話框顯示算法的所有內(nèi)容信息,主要功能是以列表的方式逐一顯示算法的詳細信息,提供算法的“刪除”和“導入”工程的功能。
測試參數(shù)列表對話框顯示所有與當前算法相關的測試參數(shù)概要,主要功能有:提供測試參數(shù)的查找功能以縮小參數(shù)的范圍;顯示測試參數(shù)對應的各項工程內(nèi)容數(shù)據(jù)。
測試參數(shù)詳細內(nèi)容查看窗口用于查看測試參數(shù)的所有內(nèi)容。窗口以非模式對話框的形式實現(xiàn),以便用戶在觀察窗口時,能夠同時操作前一個對話框。
圖像管理模塊將通過“圖像管理軟件”以com組件的形式,通過圖像管理軟件將待測圖像以及算法測試中產(chǎn)生的中間臨時圖像和結果圖像保存維護起來,供軟件的其他模塊使用。
本文主要對基于數(shù)據(jù)庫算法評測軟件的具體設計開發(fā)進行了說明。軟件利用數(shù)據(jù)庫管理紛繁復雜的測試數(shù)據(jù),而且通過不斷地啟動新的進程快速的遍歷測試算法所有參數(shù),為算法研究人員提供了便利的輔助工具。軟件以面向?qū)ο笞鳛檐浖O計的主題思想,將數(shù)據(jù)封裝為對象并建立各數(shù)據(jù)對象之間的邏輯關系,將實現(xiàn)功能的各部分建立為一個個獨立的模塊,所以在后面的算法研究中對功能擴展升級要求實現(xiàn)就變得十分方便。
[1] 孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[2] Comp-U-Learn Tech India Ltd.UML系統(tǒng)分析設計[M].王強,譯.北京:高等教育出版社,2005.
[3] CHUCK W.Visual C++6.0數(shù)據(jù)庫編程大全[M].北京:電子工業(yè)出版社,2000.
[4] STEVE R.代碼大全[M].2版.金戈,湯凌,譯.北京:電子工業(yè)出版社,2006.
[5] 劉刀桂.Visual C++實踐與提高:數(shù)據(jù)庫篇[M].北京:中國鐵道出版社,2001.
[6] 葉蓓.SQL Server2000關系數(shù)據(jù)庫特性分析[J].現(xiàn)代電子技術,2003(23):72-73,76.