再議指尖識別

來源: 張維祥的日誌

用hough+細化的方法,識別速度快,但是在某些情況下容易造成誤差,識別不是很穩定。如下圖:

由於深度圖的視差等原因,會有些點找不到,如上圖握拳後掌心位置,如果還採用前一章的方法,細化結果會很糟糕(掌心處會產生若干干擾線段)造成識別不準確。

可以利用圖像形態學中的開閉運算消除這種影響,但是當五指靠的非常近時會對手指間造成惡劣的影響(五指被靠在一起了)。

考慮其他方法:利用圖像輪廓+圖像中凸包和凸缺陷以及矩的概念進行識別。

opencv提供了輪廓圖像的輪廓檢測,通過返回最外層輪廓可以得到手的邊緣。

利用輪廓然後可以得到凸包和凸缺陷,從而得到一系列凸頂點和凸缺陷(凹)頂點和凹的深度(其中包含指尖座標)

如上圖所示,一隻手有很多凸缺陷,需要一定的策略判斷哪些是手指縫那些是干擾,可利用

凹的深度和凸點和凹點的夾角([0,90))進行閾值判斷,夾角利用三點的向量積求得。但是大拇指比較特殊(當張開很大時角度可能偏大)

這裏可以利用矩的概念進行識別,

矩是沿X,y方向的積分,因此有一個輪廓矩的概念,

輪廓矩是沿輪廓邊界像素的積分,

用來計算形狀的重心,面積,主軸和其它的形狀特徵等,因此可以求得手掌重心,根據其與凸缺陷點的物理距離可以捨去其他干擾因素。最終可求得指尖座標。

 

相對上章算法,輪廓算法識別速度略顯慢,但是識別精度比較高,穩定性好。不影響實時識別。但是存在下面問題:當只有一個手指頭伸出或者做“六”動作的時候,輪廓不存在凹點,也就無法識別指尖了,因此,需要結合:

對輪廓識別出來後,如果輪廓法識別出0個指尖,那麼對輪廓內部進行填充(消除第一張圖的影響),利用hough法進行識別。兩者的結果即爲最終結果。

上結果圖:

 

手指識別做好後,可以基於它做許多的應用,我基於識別結果做了個小的實例,可以隔空查看圖片和看視頻,廢話不說,上圖。

看圖

 

 

看電影

如果將其與一些軟件結合,可以做出很好的前景。如將其與U3D,UDK等3維可視化軟件結合,可以做出一些比較有意思的體感遊戲。

發佈了0 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章