王忠祥,姜明明,謝 偉,惠 倩,龍振宇
(山東農(nóng)業(yè)工程學院機械電子工程學院,山東 濟南 250100)
手勢識別在當下成為熱點研究,足可以證明手勢識別技術(shù)的重要性,該技術(shù)不僅僅可以實現(xiàn)人機交互,還可以應(yīng)用于其他高新技術(shù),如對軟件的控制,與物聯(lián)網(wǎng)技術(shù)的結(jié)合,與5G技術(shù)的融合。手勢識別技術(shù)還可以與正在應(yīng)用中的聲音識別、指紋識別和面部識別組合成安全系數(shù)更高的電子鎖??傊?,手勢識別可以應(yīng)用于生活中的方方面面,從而大大提高人們的生活幸福感。本文中所寫的手勢識別系統(tǒng)的手勢識別流程圖,如圖1所示。
圖1 手勢識別流程圖
圖像預處理的目的是將圖像復雜的背景和噪聲去除,弱化背景和噪音等無用的信息對手勢分割和識別的干擾,突出圖片中存在的重要信息。圖像預處理的歷程包括:灰度化、邊緣檢測和平滑等。
RGB色彩空間,如圖2所示,以R(red)、G(green)、B(blue)三種基本色為基礎(chǔ)。在RBG色彩空間中,所有的顏色都是由紅、綠、藍三種色光按照不同的比例混合而成的。一組三原色光便是一個最小的表現(xiàn)單元。
圖2 RGB色彩空間
本文經(jīng)由過程使用加權(quán)平均法將手勢圖片轉(zhuǎn)換為灰度圖像,實現(xiàn)圖像灰度化。
其中,R、G、B三個分量分別表示紅、綠、藍三種顏色,Wr是R的權(quán)值,Wg是G的權(quán)值,Wb是B的權(quán)值,Wr、Wg、Wb取不同的值,將形成不同的灰度圖像[1]。
除了RGB色彩空間,還有很多其他的色彩空間,例如HSI色彩空間、YUV顏色空間、XYZ顏色空間和Lab色彩空間等。YUV色彩空間的重要性在于它的亮度信號Y和色度信號U、V是分離的。YUV色彩空間可以與RGB色彩空間相互轉(zhuǎn)換。
HIS色彩空間對顏色的描述是從色相、飽和度和亮度三個方面來說的。HIS色彩空間是一個圓錐體的空間,此色彩空間相當復雜,但能清晰地顯示出色相、明度、飽和度的變化。亮度與色調(diào)相比,由于前者給人的視覺沖擊更大,所以在人的視覺系統(tǒng)中為了更好地處理和識別,經(jīng)常使用HSI顏色空間。在圖像處理過程中,該顏色空間可以分別獨立地使用大量的算法,簡化工作量。HSI顏色空間也可以與RGB色彩空間相互轉(zhuǎn)換,并且可以通過RGB色彩空間作為中間變量來與YUV色彩空間轉(zhuǎn)換。
手勢圖像進行灰度化后,能夠顯現(xiàn)出較為明顯的手勢輪廓,由于手勢圖像會存在噪聲、復雜背景等多方面因素的影響,所以目標手勢還無法被輕而易舉地提取到。因此,需要在圖像分割之前對圖像做平滑處理,移除那些多余的可能會干擾到識別的噪點。
圖像平滑的方法有很多,例如均值濾波、中值濾波、高斯濾波和雙邊濾波等等。其中,高斯濾波是一種線性平滑濾波,常用于圖像的平滑減噪處理;但在圖片邊緣時,此方法并不行得通,在很多時候此方法的發(fā)揮會被限制;但即便如此,高斯濾波抑制正態(tài)分布的噪聲依舊是高效的。雙邊濾波是一種非線性的濾波方法,結(jié)合空域信息和灰度相似性完成去噪。與高斯濾波相比,雙邊濾波更加簡單并且可以處理圖片邊緣,可應(yīng)用的場所更多,但是消耗的時間更長。
本系統(tǒng)采用的是頻域平滑技術(shù)。經(jīng)過傅里葉二維變化之后,由于噪聲的頻譜一般在空間高頻區(qū)域,手勢圖像的頻譜處于空間低頻區(qū)域,所以圖像平滑不僅能在空域進行,也能在頻域進行。因此,可以通過低通濾波器抑制高頻分量,從而實現(xiàn)圖像的平滑。濾波器的數(shù)學表達式為如下。
分割方法是閾值法,是圖像處理中最常用的分割方法,經(jīng)過灰度化的手勢圖片有均勻一致的灰度值,而且處在一個具有其他等級灰度值的均勻背景下,使用閾值法可以起到不錯的分割效果。
二值化處理就是將圖片上點的灰度值設(shè)為0或255,使整個圖片具有明顯的黑白效果[2]。根據(jù)圖像中的每一個像素點的灰度值是否滿足閾值的要求來判斷圖像中該像素點屬于手勢識別目標還是背景,從而將灰度化圖像轉(zhuǎn)換成二值化圖像[3]。
用數(shù)學表達式來表示,則可設(shè)原始圖像f(x,y),T為閾值,滿足下式。
閾值法算法簡單,能用封閉連通的邊界定義不交疊的區(qū)域,對手勢與背景有較顯著對比的圖像,得到較好的分割結(jié)果。
以剪刀石頭布的手勢為例,如圖3、圖4、圖5所示。
圖3 剪刀與二值化后剪刀
圖4 石頭與二值化后剪石頭
圖5 布與二值化后布
在與圖庫中的圖片進行比對之前,需要先根據(jù)手勢的二值圖提取手勢的輪廓[4]。在手勢圖片預處理后,為了進一步提高手勢識別的準確率,需要對手勢圖片進行特征提取。首先,需要根據(jù)手勢的二值化圖像提取手勢的輪廓,然后與圖庫中的手勢圖片進行匹配比對。輪廓的提取不僅是為了得到目標邊緣點的位置信息,而且能進一步減少手勢圖像中的無關(guān)信息,突出重要特征,從而降低計算量,提高識別速度。
手勢識別是手勢識別研究中最為重要的一部分,目前用于識別的算法有很多,主要有基于模板匹配的方法、基于數(shù)據(jù)分類的方法和基于深度學習的方法。本系統(tǒng)采用了相對簡單且相對容易實現(xiàn)的方法,即像素逐一對比的方法。此方法在實現(xiàn)功能上相對簡單,但實際中其他幾種方法更為精確。
仿真實驗測試,限于運算速度,僅在圖庫中導入六張手勢圖片,如圖6所示。
圖6 圖庫手勢素材
Matlab是一款非常強大的仿真軟件。Matlab具有一系列幫助使用者的函數(shù)和文件,在數(shù)據(jù)處理、圖像處理等多個方面首屈一指。Matlab對新手使用者非常友好,簡單易懂,基于現(xiàn)在最為流行的C++語言,更加符合使用者對表達式的書寫。并且其中包含著大量的函數(shù),從簡單基本的函數(shù)到復雜的函數(shù),能夠滿足不同階段學習者的不同需求。開發(fā)方面,能夠更加方便地控制多個文件和圖形窗口;編程方面,支持函數(shù)嵌套,有條件中斷等;圖形化方面,擁有強大處理功能;輸入輸出方面,能夠直接與Excel和HDF5進行連接。
本文選擇了使用Matlab進行了簡單的仿真實驗,Matlab具有強大的圖形處理功能,編程語言簡單自然,方便學習和掌握,且為使用者提供了很多便捷的處理工具。仿真的過程中由于不同的膚色及不同的背景,可能還需要按照實際情況對某些步驟作出調(diào)整,還有非常大的改進空間。