SPCA563B實(shí)現(xiàn)圖像識(shí)別系統(tǒng)
2 系統(tǒng)軟件設(shè)計(jì)
本圖像識(shí)別系統(tǒng)的識(shí)別功能主要通過(guò)軟件系統(tǒng)來(lái)實(shí)現(xiàn)。為了提高程序的可移植性,為將來(lái)該系統(tǒng)功能擴(kuò)展預(yù)留空間,整個(gè)軟件系統(tǒng)采用分模塊、分層次的方法編寫程序,采用匯編語(yǔ)言實(shí)現(xiàn)對(duì)寄存器的讀/寫以及對(duì)中斷的控制,并為上層的開(kāi)發(fā)提供靈活的接口。上層采用C語(yǔ)言編寫,通過(guò)調(diào)用底層函數(shù)來(lái)間接對(duì)硬件資源進(jìn)行操作。這樣編寫程序使整個(gè)系統(tǒng)結(jié)構(gòu)清晰,程序可移植性和可擴(kuò)展性增強(qiáng),而且占用硬件資源少,為系統(tǒng)功能的擴(kuò)展和進(jìn)一步開(kāi)發(fā)預(yù)留充分的空間。
整個(gè)軟件系統(tǒng)由主程序、圖像識(shí)別功能模塊子程序、中斷服務(wù)子程序和語(yǔ)音輸出子程序等組成。主程序負(fù)責(zé)整個(gè)系統(tǒng)的協(xié)調(diào)和控制工作,通過(guò)調(diào)用不同的子程序來(lái)實(shí)現(xiàn)不同的功能。主程序流程如圖7所示。
為突出系統(tǒng)的特點(diǎn),下面通過(guò)手勢(shì)識(shí)別的實(shí)例來(lái)重點(diǎn)描述圖像識(shí)別原理。手勢(shì)識(shí)別包含兩個(gè)步驟:手形的輪廓跟蹤,提取其輪廓的相關(guān)數(shù)據(jù);手勢(shì)的識(shí)別,在上一步得到的數(shù)據(jù)的基礎(chǔ)上進(jìn)行分析判斷而得到結(jié)果。
2.1 輪廓跟蹤算法實(shí)現(xiàn)
輪廓跟蹤的目的是獲得圖像的外部輪廓特征(包括目標(biāo)物體邊緣點(diǎn)的坐標(biāo)和方向),為圖像的形狀分析做準(zhǔn)備。SPCA563B的DSP針對(duì)膚色有一系列的顏色處理,這樣系統(tǒng)就可以方便圖像轉(zhuǎn)化為膚色與非膚色的二值圖像。通過(guò)對(duì)暫存在SRAM中的二值圖像進(jìn)行數(shù)據(jù)分析,來(lái)提取手形的邊緣輪廓。
輪廓跟蹤算法步驟如下:
?、侔磸纳系较隆淖蟮接业捻樞驋呙鑸D像,尋找第一個(gè)非白像素作為邊界起始點(diǎn)A[0],記錄A[0]點(diǎn)的坐標(biāo)(A[0].x,A[0].y)。A[0]是具有最小行和列值的邊界點(diǎn)。再定義一個(gè)掃描方向變量dir,該變量用于記錄上一步中沿著前一個(gè)邊界點(diǎn)到當(dāng)前邊界點(diǎn)的移動(dòng)方向。其初始化取值為A[0].dir=7;掃描方向定義如圖8所示。
假設(shè)當(dāng)前的坐標(biāo)為(x,y),則其8個(gè)鄰域坐標(biāo)如下:
評(píng)論