梁樹為
(西安電子科技大學電子工程學院,陜西西安 710071)
隨著計算機、通信和網絡技術的發展,用戶對圖像傳輸和存儲中的數據壓縮要求變得更高。圖像壓縮算法是圖像壓縮過程中的核心內容。圖像壓縮傳輸后再解壓得到圖像質量的好壞,直接用于評價壓縮算法的優劣。因此,在研究算法時關于算法的測試評選過程必不可少。文中的算法評測軟件主要用于圖像壓縮算法研究過程中的算法測試以及算法對某些圖像和參數的效果差異的統計記錄。
軟件設計的算法質量測評過程是:先進行大范圍遍歷測試,通過統計圖形或數據找出效果較好的參數組合,然后使用這些較好的參數進行測試,這次測試將保存解壓縮后的圖像數據,可以進行主觀評價,最后得出結論,便于以后查詢。具體軟件流程圖如圖1所示[1]。
以數據為中心的分布式計算為主導思想,強調代碼的重用性,在整體上將軟件分為幾個部分,各個部分相互獨立,把通用對象單獨封裝,形成較為獨立的程序庫,可以在其他項目中調用[2]。

圖1 軟件流程圖
采用面向對象的思想操作數據庫,把數據對象化,就是使用類封裝同屬性數據集合,真正數據的使用者看不到數據的物理結構,僅僅能看到其中的邏輯關系。軟件依托SQL Server2000實現對測試數據的存儲和管理,將軟件用到的算法內容、算法參數、圖像數據以及結果數據都交給數據庫維護[3]。
圖像壓縮算法以及各個輔助算法是獨立的可執行文件,而且必須是DOS提示符下運行的無界面程序,軟件將不斷啟動執行算法進程,遍歷執行算法的所有參數組合。
軟件將以工程的形式來進行操作,它將包含軟件應用中所有的數據和設置。整個算法的評估過程和在其中用到、產生的各類數據,都將以一個工程的形式進行保存,工程的概念將作為軟件的主框架來實現。
軟件實現大致分為三層:第一層,負責最底層的數據維護和算法執行,具體包括數據庫的管理和測試算法的執行進程。第二層,是將軟件執行時存在于內存中的數據維護起來的一些類,具體包括維護從數據庫中取出數據的工程數據管理類、算法數據管理類、圖像數據管理類以及保存查找行為所得到數據的算法列表類和工程列表類。第三層,就是軟件與用戶間的接口界面,主要負責接受用戶的輸入以及實時顯示軟件執行進程。各層之間的關系如圖2所示[4]。

圖2 軟件結構層次圖
軟件根據各模塊實現功能的相似性和多樣性,可利用類的繼承性很好地將各個功能模塊表示出來,為后面其他模塊的擴展或修改提供了良好的結構基礎。
首先定義軟件中的多個基礎類,包括管理數據的數據管理類、負責查找功能的數據查找器以及保存查找結果的數據列表類和數據內容類。然后根據不同數據的不同性質,從基礎類派生出各種派生類。它們雖然通過不同的方法實現,但其具有很多相同的對外接口,這為后面模塊多態地調用各模塊功能提供了方便。其具體的繼承關系如圖3所示[5-6]。

圖3 類繼承關系圖
如圖4所示,軟件功能直接依賴于5個模塊,其中左邊3個模塊與軟件操作流程相關,有明顯的先后順序;右邊的兩個模塊屬于輔助模塊,向主要操作提供數據支持。

圖4 軟件功能模塊
工程管理模塊不僅負責對歷史工程的查找、查看和刪除操作,而且包含了對當前正在執行工程的進度管理。因為軟件設計時將整個算法評測過程定義為一個工程,無論是評測過程中用到的算法、算法參數,還是評測完畢后的算法執行結果、結果統計篩選以及算法的執行過程和與數據庫的交互,都將在工程管理的大框架下完成。工程查看界面將是軟件的主要界面,用戶在上面可以完整地看到工程的各項詳細內容,并在其上進行工程編輯。

圖5 工程管理模塊流程圖
圖中描述了工程管理模塊的界面操作流程,從左邊的菜單開始,是用戶點擊菜單后出現的對話框。圖中體現出兩個主要界面,顯示工程列表對話框和查看編輯工程窗口。工程列表對話框提供查找功能,可以按照工程各項參數數據查找工程,支持在查找結果中再次查找。工程查看窗口是整個軟件的主窗口,工程打開后,該窗口被顯示出來,作為主窗口直到軟件關閉。
算法執行模塊功能簡單,從數據庫中讀取參數,然后執行參數中指定的算法程序,最后把結果保存到數據庫中,并在界面上提示用戶。
算法執行模塊有兩個類,狀態顯示對話框類和算法執行線程類。其中狀態顯示對話框負責與用戶交互,向線程提供數據,控制線程的執行;而算法執行線程類只負責執行算法程序以及獲取執行結果。算法執行模塊的主要功能是啟動算法執行線程,在軟件后臺執行算法的所有遍歷,將結果隨時存入數據庫,并在界面上實時顯示執行過程。該模塊主要將算法執行時出現的錯誤或崩潰限制在模塊內,不使其擴散到軟件其他部分導致整個軟件的崩潰。
統計篩選模塊主要實現評測算法遍歷完畢后的數據分析工作。該模塊主要的操作對象是數據庫中的遍歷參數表,通過對該表的分析可以了解到算法在各種參數組合下的性能表現。軟件通過對某些結果值隨參數變化趨勢的觀察,可以客觀地做出對算法的評價。該模塊在界面上主要有兩個對話框組成:繪圖對話框和參數篩選對話框。
繪圖對話框主要用于顯示測試參數與測試結果的關系曲線圖,使算法測試用戶能夠直觀地觀察到算法的某些性能。通過繪制兩種參數的關系曲線圖,可以很快獲取算法在某些方面某些參數區間的優劣性能。
參數篩選對話框主要是評價數據的統計,能讓用戶篩選需要的組合。其具體功能是將統計出符合的參數組合數據顯示在界面上。統計功能相當于查找,能夠讓用戶找到符合條件的參數組合。
算法管理是對待測算法和其他輔助算法程序的管理。本模塊實現了算法的添加、導入、查看和刪除功能。模塊中主要有5個對話框,這些對話框的關系如圖6所示,圖中歷史工程列表和工程查看兩個對話框是工程管理的對話框,不包括在算法管理模塊中。

圖6 算法管理模塊流程圖
添加算法對話框實現了用戶添加算法的接口,用戶只需填入算法描述腳本文件即可。對話框打開指定的腳本文件,解析文件內容,把解析正確的內容顯示在對話框上。添加算法成功后,算法相關的各種數據將在數據庫的相應項目中保存,從而實現算法在數據庫的添加。
算法列表對話框實現快速查找算法的手段,按一定條件查找符合的算法,并支持在結果中查找。查找成功后在對話框列表中顯示符合條件算法的名稱、版本、添加時間等基本內容。
算法詳細內容對話框查看對話框顯示算法的所有內容信息,主要功能是以列表的方式逐一顯示算法的詳細信息,提供算法的“刪除”和“導入”工程的功能。
測試參數列表對話框顯示所有與當前算法相關的測試參數概要,主要功能有:提供測試參數的查找功能以縮小參數的范圍;顯示測試參數對應的各項工程內容數據。
測試參數詳細內容查看窗口用于查看測試參數的所有內容。窗口以非模式對話框的形式實現,以便用戶在觀察窗口時,能夠同時操作前一個對話框。
圖像管理模塊將通過“圖像管理軟件”以com組件的形式,通過圖像管理軟件將待測圖像以及算法測試中產生的中間臨時圖像和結果圖像保存維護起來,供軟件的其他模塊使用。
本文主要對基于數據庫算法評測軟件的具體設計開發進行了說明。軟件利用數據庫管理紛繁復雜的測試數據,而且通過不斷地啟動新的進程快速的遍歷測試算法所有參數,為算法研究人員提供了便利的輔助工具。軟件以面向對象作為軟件設計的主題思想,將數據封裝為對象并建立各數據對象之間的邏輯關系,將實現功能的各部分建立為一個個獨立的模塊,所以在后面的算法研究中對功能擴展升級要求實現就變得十分方便。
[1] 孫鑫.VC++深入詳解[M].北京:電子工業出版社,2006.
[2] Comp-U-Learn Tech India Ltd.UML系統分析設計[M].王強,譯.北京:高等教育出版社,2005.
[3] CHUCK W.Visual C++6.0數據庫編程大全[M].北京:電子工業出版社,2000.
[4] STEVE R.代碼大全[M].2版.金戈,湯凌,譯.北京:電子工業出版社,2006.
[5] 劉刀桂.Visual C++實踐與提高:數據庫篇[M].北京:中國鐵道出版社,2001.
[6] 葉蓓.SQL Server2000關系數據庫特性分析[J].現代電子技術,2003(23):72-73,76.