1需求分析
通過對干部測評的內容和標準進行分析,我們發現干部測評的內容較多,測評項目變化比較頻繁,如果系統采用統一的測評格式不能滿足用戶的需要。同時,大部分單位采用“無記名投票”的方式對干部進行評價,這種方式簡單易行,用戶容易接受。我們對用戶的選票進行對比后發現:用戶的選票的內容和數目雖然各不相同,但是基本格式比較類似,可以歸類實現。因此,我們決定從選票著手,對選票進行掃描轉換成圖像格式,利用圖像識別和分析算法對選票進行分析計算,從而得到準確的測評數據。
通過對基于圖像識別的相關系統進行對比,我們發現對于圖像的識別可以分為三類:①對復雜的圖像進行識別,如人臉、指紋的識別。②利用的專用的硬件設備對專用的卡片進行識別,如考試答題卡的識別。③對簡單圖像的模式識別;如對汽車牌照數字的識別。我們使用的選票(測評表如圖1所示)是普通的表格(圖1),既沒有指紋的復雜圖像,也沒有答題卡的標準格式。在每個表格中一般是用戶填寫的勾或圈。如果系統進行模式識別,需要存儲大量的勾或圈的特征模式庫,將用戶的勾和模式庫中的圖像數據進行對比,這樣識別結果受到模式庫大小的限制,同時識別的速度較慢。因此我們采用“定位識別區域,比較像素數目”的方法對測評表圖像進行識別,這種識別方法在保證識別正確率的同時,提高了識別的速度。
系統完成對測評表圖像的識別后,得到了測評數據。我們需要對測評數據進行存儲。測評系統的數據主要包括:測評主體信息,測評表信息、測評數據和系統配置信息。系統中沒有多媒體數據,數據量不大,因此,采用小型的數據庫系統可以滿足數據的存儲需求。
系統需要為用戶提供統計結果。因為測評的內容較多,并每個測評項目包括多個測評小項,所以,系統要提供對不同測評項目的結果進行統計,同時將得票數加權計算成百分制,最后按照不同的排序方式直觀地顯示給用戶。
最后,不同的測評表具有不同的格式,相同的表包括測評項目不同,因此,系統需要提供修改測評表類型和測評項目的表定制功能。
1.2系統結構
根據系統的需求分析,系統采用三層結構:數據庫層、數據處理層和用戶接口層,如圖2所示。
(1)數據庫層是存儲數據的數據庫系統。為了達到較小的數據冗余,保證數據記錄間邏輯關系合理,在測評項目修改時,減少對測評數據的影響。數據庫的設計按照“數據表盡量小,多表連接”的原則,使用小型的數據表存儲基本數據,將基本表連接后提供不同的數據視圖。數據庫的結構如圖3所示,數據庫中主要包括7個表:測評數據表、人員信息表、測評客體表、測評內容表(測評小項表)、測評等級表、測評大項表和表基本信息表。各個表之間按照惟一的ID號進行關聯。從而構成完整的測評數據庫。(2)數據處理層包括數據的讀寫、分析和統計接口。這一層是系統的核心部分,它負責從底層數據庫中讀取數據,將數據統計分析后,提交給上層界面顯示;并且從用戶接口層接收到輸入的數據進行處理,最后寫入到數據庫中存儲。處理層包含系統主要的類:初始化和連接數據庫的CADORecordset類和CADOConnection類,用于數據管理的CDataMgr類,用于數據統計的CDataStat類。
(3)用戶接口層包括圖像識別、數據顯示、系統設置和打印排序等功能。圖像識別功能提供了用戶選擇測評主體和顯示識別進度的界面。數據顯示功能具有按照測評項目、測評小項、測評等級等多種形式顯示測評結果的能力。系統設置包括對測評主體、測評表類型、測評表等級、測評表項目等信息的設置。排序操作提供了對測評結果按照不同屬性進行排序的功能。打印操作和普通系統的打印功能不相同,它將測評結果數據導出到Word中顯示,用戶可以根據自己的需要,修改格式后打印。它避免了部分系統不能完全顯示打印數據的缺陷,同時提高了打印操作的靈活性。用戶接口層含有最多的類,其中有:完成打印功能的CDataPrint類,提供排序的CDataSort類,顯示主窗口的CMainFrame類,顯示主要框架的CUserInfoView類和CUserListView類,還有實現系統設置功能的類。
2關鍵技術
2.1圖像識別
由于經過掃描設備掃描生成的是8位BMP灰度圖像文件,文件的每個字節數據對應圖像的單個像素,根據這一特點對圖像的每個有關像素進行讀取和分析。
處理步驟如下:
(1)將文件中的數據讀入緩沖區中,并得到位圖文件的大小,如圖像高度、寬度以及每一行的像素個數。
(2)從數據緩沖區的一個較小偏移處開始順序讀取。為了避免掃描圖像出現黑邊干擾判讀,取值應避免是圖像邊界,以后每讀到圖像邊界都應跳過邊界范圍。
(3)由于對于位圖的讀取是按照從下至上、從左至右的順序逐行逐個像素點讀取。因此,理想情況下得到的第一個深色像素點且滿足兩根線交叉點條件的點應是表格的左下角點,如果得到的第一個這樣的點經過判定不是左下角點,則應該是圖像出現右下傾斜的情況,得到的應是右下角點。為避免這種情況,可給出一定的判定條件,保證得到的第一個滿足這些條件的點應是表格的左下角點。
(4)根據表格的特點和實際測評對象數沿線搜索得到評價區域的左下起始位置點。在搜索過程中,通過得到的一些與表格起始位置點同行或同列的點的情況,判斷出表格是否發生傾斜,如果傾斜超過一定程度,則應認為這個圖像出錯,應重新掃描這個表格生成新的圖像文件。
(5)找到評價區域左下起始點后,從通用性來講,應該找到第一行每個單元格的下邊界點,從而以此為依據得到每一列單元格的寬度;再找到第一列每個單元格的左邊界點,從而可以得到每一行單元格的高度。根據這些寬度和高度值得到每一個單元格的四個角點的位置,確定每一個單元格的范圍。
(6)根據每個單元格的范圍,取一定的子范圍搜索每個單元格內的深色像素點的個數,為避免可能將邊框包括在內的情況,對于單元格中同行或同列的深色像素點只按照一個深色像素點來計數,這樣即使將四個邊框都包括進來,也只會認為只有四個像素點,不會對結果有大的影響。
本文來源:http://www.nvnqwx.com/shiyongwen/2069153.htm