摘要:為了使聾啞人與更多不懂手語的人自然地交流,本作品將手語翻譯成文字和語音,利用microsoftkinect記錄手語手勢的三維座標,通過機器學習和優化演算法,在intelatom平台上實現了手語翻譯。
簡介
手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個溝通障礙是源於大部分人不懂得手語。
另一方面,聾啞小朋友由於很難表達自己,以及中國的聾啞教師數量有限,導致他們的學習出現困難,得不到和普通小朋友同等的學習機會。
為了解決這個問題,我們設計實現了乙個從手語動作翻譯成文字和聲音的翻譯器,令學習手語更有趣、更方便、更容易,以達到這個專案縮少聾啞人士與其他人的溝通障礙的目的。工作原理和演算法
特徵提取
深度影象的解析度是640x480,意味著每秒鐘的資料有17.6mb,儲存如此大量的資料是不可能的。同時許多沒有用處的資料(例如背景)都包含在原始資料中。因此我們必須從原始資料中提取出有用的資訊。骨架是一種可以用來表示手語的有用資訊。
我們利用kinect和openni提取使用者的骨架節點得到xyz三點的座標。我們一共提取了6個骨架節點,左手、左手肘、左肩、右手、右手肘、右肩。對於每一幀,我們從這些節點中計算出14個特徵向量來表示這一幀的手語動作。經過標準化計算,我們用121幀來表示乙個手語詞語,因此每乙個詞語有1694個特徵。
原始資料標準化
我們通過均勻分配和插值使原始資料標準化。通過二次插值法,利用最相近的三個原始資料計算出標準化的資料,使得每乙個手語動作都統一用121幀來表示。
支援向量機
svm(支援向量機)是統計學和電腦科學中的概念,簡而言之,給定一組已經分好類別的資料,而且分類依據是未知的,支援向量機訓練演算法可以通過計算構建乙個模型,一組新的資料到來時可以**出新的資料屬於哪乙個類別。
svm的模型將所有資料映像到乙個高維空間裡,並計算出不同類別資料之間的最大化幾何邊緣區,然後把新的資料對映到同乙個空間,根據之前計算出的最大化幾何邊緣區來**新的資料屬於哪乙個類別。
平台限制與解決方法
平台限制
使用kinect的建議系統需求是cpu有雙核2.66ghz或以上,記憶體有2gb或以上,但intel提供的平台只有分別1ghzcpu和1g記憶體,明顯與系統需求有差異。
即使我們使用linux作業系統,處理器使用率依舊滿載,並且幀率只有大約2到4左右,遠少於正常的30幀。在這種條件下,再加上處理器資源已被提取資源的執行緒佔據,所以不可能在處理器裡進行資料分析的工作。
瓶頸
為了找出瓶頸,我們首先關閉了影象使用者介面。雖然處理器使用率降至85%,但幀率跟之前的一樣。我們觀察得到其中乙個openni控制的執行緒依然是占領了整個執行緒。只是由於所提供的平台是雙線程的關係,使用率分別被定在50%及35%。
手語識別和翻譯
摘要 為了使聾啞人與更多不懂手語的人自然地交流,本作品將手語翻譯成文字和語音,利用microsoftkinect記錄手語手勢的三維座標,通過機器學習和優化演算法,在intelatom平台上實現了手語翻譯。簡介手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間...
簡單版的python文字識別和翻譯
最近研究了一下用python識別影象上的文字,發現其簡直是太方便了,只需安裝好tesseract ocr環境,然後直接呼叫就能把文字識別出來。tesseract,一款由hp實驗室開發由google維護的開源ocr optical character recognition 光學字元識別 引擎,與mi...
opencv 人臉識別 (二)訓練和識別
環境 vs2010 opencv 2.4.6.0 特徵 eigenface input 乙個人臉資料庫,15個人,每人20個樣本 左右 output 人臉檢測,並識別出每張檢測到的人臉。1.為訓練資料預處理 為灰度 對齊 歸一化 void resizeandtogray char dir,int k...