為了更好的完成工程實踐,在項目的初始階段需要對其進行需求分析與概念原型的設計,從而可以對后續工作定下明確的方向,本文從需求分析、業務領域建模、數據模型和概念原型等幾個方面,基於我的工程實踐項目——手勢識別系統,進行一個簡要的實踐分析。
工程實踐項目
我的工程實踐項目是一個手勢識別系統,根據以往的文獻來看,該項目的實現有多種技術路線,在手勢的檢測與分割上,一種是利用單目攝像頭提取二維手勢圖像,在利用顏色空間進行一個手勢的分割,提取出要識別的目標手勢;另一種則是利用深度相機獲取深度手勢圖像,利用一些現有的庫函數來進行手勢的分割與提取。至於手勢的識別,主要分為模板匹配、狀態圖轉移、統計學習、神經網絡等幾種方法。
而我對該項目既定的技術路線是:利用Kinect攝像頭來獲取手勢的深度圖像,利用OpenCV來對手勢進行一個分割,提取出手勢圖像,最后選擇模板匹配的方法,將手勢的特征與訓練的模板進行一個匹配,從而識別出手勢的內容。
需求分析
原型化方法和建模的方法是整理需求的兩類基本方法。原型化方法可以很好地整理出用戶接口方式,比如界面布局和交互操作過程。建模的方法可以快速給出有關事件發生順序或活動同步約束的問題,能夠在邏輯上形成模型了整頓繁雜的需求細節。
在本文的手勢識別項目中,其主要的需求有:
- 用戶的手勢可以被采集
- 采集到的用戶手勢被分割、提取
- 將手勢進行特征提取
- 利用特定算法,對提取的手勢特征進行匹配
- 用戶可以與系統交互,進行多次的手勢提取
- 用戶利用用戶界面,進行常規操作,如登錄,開始與退出
上述需求中,第三、四兩條沒有與用戶交互,沒有畫出其對應的用例圖如下:

業務領域建模
業務領域建模的基本步驟如下:
- 收集應用業務領域的信息。聚焦在功能需求層面,也考慮其他類型的需求和資料;
- 頭腦風暴。列出重要的應用業務領域概念,給出這些概念的屬性,以及這些概念之間的關系;
- 給出這些應用業務領域概念分類。分別列出哪些是類、哪些是屬性和屬性值、以及列出類之間的繼承關系、聚合關系和關聯關系;
- 將結果用UML類圖畫出來。
通過上一階段的分析,該系統應該具有GUI類、Users類、Gestures類,Template類等四個類,在用戶交互界面,用過有登錄、開始、退出等控制按鈕;在用戶類中,用戶應該可以利用GUI控制系統進行操作,與手勢類進行交互,從而獲取手勢;在手勢類中,應該包括進行手勢檢測與分割的方法、手勢特征提取的方法;在模板類中,應包括訓練得到的手勢模板,並且應具有手勢匹配的方法。其UML類圖如下:

數據模型
1)用戶表
| 序號 | 變量名 | 類型 | 描述 |
| 1 | id | string | 用戶名 |
| 2 | gesture | Gesture[] | 手勢 |
2)手勢表
| 序號 | 變量名 | 類型 | 描述 |
| 1 | gesturetype | string | 手勢類型 |
| 2 | gesture_id | string | 手勢ID |
概念原型
概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論。概念原型是一種虛擬的、理想化的軟件產品形式。
概念原型 = 用例 + 數據模型
該項目的工作過程如下:
首先,用戶通過圖形化界面登錄進系統,開始使用手勢識別系統;接着,用戶做出手勢,通過深度攝像機進行手勢的收集;然后,利用系統將手勢進行分割和提取;最后,利用手勢識別算法,進行匹配,得出手勢的類型。
總結
通過本文,我對用例建模、業務領域建模和數據建模有了更深的理解,也對工程實踐項目有了更明確的目標,為以后再進行項目的開發打下了基礎。
