SPCA563B實現圖像識別系統
2 系統軟件設計
本圖像識別系統的識別功能主要通過軟件系統來實現。為了提高程序的可移植性,為將來該系統功能擴展預留空間,整個軟件系統采用分模塊、分層次的方法編寫程序,采用匯編語言實現對寄存器的讀/寫以及對中斷的控制,并為上層的開發提供靈活的接口。上層采用C語言編寫,通過調用底層函數來間接對硬件資源進行操作。這樣編寫程序使整個系統結構清晰,程序可移植性和可擴展性增強,而且占用硬件資源少,為系統功能的擴展和進一步開發預留充分的空間。
整個軟件系統由主程序、圖像識別功能模塊子程序、中斷服務子程序和語音輸出子程序等組成。主程序負責整個系統的協調和控制工作,通過調用不同的子程序來實現不同的功能。主程序流程如圖7所示。

為突出系統的特點,下面通過手勢識別的實例來重點描述圖像識別原理。手勢識別包含兩個步驟:手形的輪廓跟蹤,提取其輪廓的相關數據;手勢的識別,在上一步得到的數據的基礎上進行分析判斷而得到結果。
2.1 輪廓跟蹤算法實現
輪廓跟蹤的目的是獲得圖像的外部輪廓特征(包括目標物體邊緣點的坐標和方向),為圖像的形狀分析做準備。SPCA563B的DSP針對膚色有一系列的顏色處理,這樣系統就可以方便圖像轉化為膚色與非膚色的二值圖像。通過對暫存在SRAM中的二值圖像進行數據分析,來提取手形的邊緣輪廓。
輪廓跟蹤算法步驟如下:
①按從上到下、從左到右的順序掃描圖像,尋找第一個非白像素作為邊界起始點A[0],記錄A[0]點的坐標(A[0].x,A[0].y)。A[0]是具有最小行和列值的邊界點。再定義一個掃描方向變量dir,該變量用于記錄上一步中沿著前一個邊界點到當前邊界點的移動方向。其初始化取值為A[0].dir=7;掃描方向定義如圖8所示。

假設當前的坐標為(x,y),則其8個鄰域坐標如下:

評論