專利名稱:一種人體跟蹤方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種人體跟蹤方法及系統(tǒng),更具體地說,涉及一種當(dāng)人體運(yùn)動(dòng)出現(xiàn)部 分部位被其他部位遮擋時(shí)采用擬合算法獲得被遮擋部位的位置狀態(tài)的人體跟蹤方法及設(shè)備。
背景技術(shù):
隨著游戲開發(fā)者技術(shù)水平的提高,出現(xiàn)了讓用戶感受更真實(shí)的例如體感游戲,此 類游戲需要處理計(jì)算人體的運(yùn)動(dòng)狀態(tài)。常見的體感游戲系統(tǒng)中,WII、Cyffee等采用如加速 度計(jì)、陀螺儀等慣性傳感器,捕捉人體運(yùn)動(dòng)的加速度、方向等信息。但當(dāng)需要描述人體多個(gè) 部位時(shí),使用慣性傳感器,不僅成本高,使用也極其不便;在此情況下,出現(xiàn)了采用光學(xué)捕捉 的方法在需要計(jì)算運(yùn)動(dòng)的人體部位粘貼相應(yīng)的標(biāo)記點(diǎn),通過分析標(biāo)記點(diǎn)的運(yùn)動(dòng)狀態(tài)描述人 體運(yùn)動(dòng),當(dāng)需要描述人體多個(gè)部位時(shí),通過增加標(biāo)記點(diǎn)的數(shù)量,可以以較低的成本實(shí)現(xiàn)體感 功能,然而用戶使用時(shí)卻會(huì)因標(biāo)記點(diǎn)的存在尤其是大量標(biāo)記點(diǎn)的存在而感覺繁瑣。此后,隨 著計(jì)算的進(jìn)一步發(fā)展,出現(xiàn)了無標(biāo)記點(diǎn)的人體運(yùn)動(dòng)捕捉方案,即通過立體視覺系統(tǒng)、結(jié)構(gòu)光 系統(tǒng)、以及ToF(飛行時(shí)間time offlight)攝像機(jī)等數(shù)據(jù)源捕捉人體3D點(diǎn)云,通過分析人 體點(diǎn)云,可構(gòu)建出人體模型,進(jìn)而分析人體運(yùn)動(dòng)狀態(tài)。然而目前的通過點(diǎn)云配準(zhǔn)算法構(gòu)建人 體模型的無標(biāo)記點(diǎn)的人體運(yùn)動(dòng)捕捉方案存在以下問題由于點(diǎn)云數(shù)據(jù)源等原因,軀干部位 點(diǎn)的數(shù)量較多,頭部、四肢等部位點(diǎn)數(shù)量較少,在點(diǎn)云分辨率較低以及一些如遮擋等極端情 況下,部分部位甚至不存在點(diǎn),此時(shí),利用點(diǎn)云配準(zhǔn)算法構(gòu)建人體模型的無標(biāo)記點(diǎn)的人體運(yùn) 動(dòng)捕捉方案將完全失效。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對(duì)現(xiàn)有技術(shù)的上述在點(diǎn)云分辨率較低以及一些 如遮擋等極端情況下,利用點(diǎn)云配準(zhǔn)算法構(gòu)建人體模型的無標(biāo)記點(diǎn)的人體運(yùn)動(dòng)捕捉方案將 完全失效的缺陷,提供一種從低密度點(diǎn)云中構(gòu)建人體模型的人體跟蹤方法和系統(tǒng)。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是提供一種人體跟蹤方法,其特征在 于,包括以下步驟Si、采用線段表示四肢的上臂、下臂、大腿、小腿和頭部,矩形表示軀干,根據(jù)人體 尺寸參數(shù)建立人體模型;S2、點(diǎn)云采集設(shè)備讀取當(dāng)前幀采集到的人體點(diǎn)云數(shù)據(jù);S3、分別計(jì)算人體點(diǎn)云數(shù)據(jù)中每個(gè)點(diǎn)到表示上臂、下臂、大腿、小腿、頭部的線段和 表示軀干的矩形面的距離,比較選擇距離每個(gè)點(diǎn)最近的部位,并記錄該點(diǎn)以及該部位,從而 得到每個(gè)點(diǎn)與該點(diǎn)最近的部位的配對(duì),該處稱為最近點(diǎn)對(duì);S4、根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表示頭部的線段,同時(shí) 根據(jù)最近點(diǎn)對(duì)采用擬合算法計(jì)算得到表示四肢的線段,即計(jì)算得到人體姿態(tài)參數(shù);S5、迭代步驟S3、S4,直至滿足要求時(shí)退出;
S6、根據(jù)所得的表示軀干的四條邊線和分別表示頭部和四肢的線段輸出人體模型。在本發(fā)明所述的人體跟蹤方法中,所述步驟Sl中的用于表示軀干的矩形分為共 用一條邊的上下兩部分矩形,分別為第一矩形和第二矩形,在所述步驟S3中求最近點(diǎn)對(duì)時(shí) 分別計(jì)算每個(gè)點(diǎn)到第一矩形和第二矩形的距離,并在所述步驟S4中根據(jù)所述第一矩形和 第二矩形的最近點(diǎn)對(duì)計(jì)算出所述第一矩形、第二矩形所在的平面,兩矩形所在平面的交線 即為兩矩形共用的邊所在直線;讓所述第一矩形和第二矩形的最近點(diǎn)對(duì)向所述兩矩形共用的邊所在直線投影,根 據(jù)所述第一矩形和第二矩形的寬度,搜索線段使得落得線段范圍內(nèi)的投影的數(shù)量最多,所 述線段的兩個(gè)端點(diǎn)即為所述第一矩形和第二矩形共用的邊的兩個(gè)頂點(diǎn);根據(jù)所述第一矩形和第二矩形的高度計(jì)算所述第一矩形和所述第二矩形的其它 頂點(diǎn),從而得到所述第一矩形和第二矩形。在本發(fā)明所述的人體跟蹤方法中,所述第一矩形和第二矩形的高度固定,所述計(jì) 算所述第一矩形和第二矩形的其它頂點(diǎn)的方法為在所述第一矩形所在的平面內(nèi),分別求過所述第一矩形和所述第二矩形共用的邊 的兩個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,分別為第 一射線和第二射線,分別在所述第一射線和第二射線上求與所述第一射線、第二射線端點(diǎn) 距離為所述第一矩形的高度的點(diǎn),稱為第一端點(diǎn),第二端點(diǎn),所述第一矩形和所述第二矩形 共用的邊的兩個(gè)端點(diǎn)以及所述第一端點(diǎn)、所述第二端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);在所述第二矩形所在的平面內(nèi),分別求過所述第一矩形和第二矩形共用的邊的兩 個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,分別為第三射 線和第四射線,分別在所述第三射線和第四射線上求與所述第三射線、第四射線端點(diǎn)距離 為所述第二矩形的高度的點(diǎn),稱為第三端點(diǎn),第四端點(diǎn),所述第一矩形和所述第二矩形共用 的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。在本發(fā)明所述的人體跟蹤方法中,所述第一矩形和第二矩形高度不固定但高度之 和固定,所述計(jì)算所述第一矩形和第二矩形其它頂點(diǎn)的方法為在所述第一矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn), 垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,稱為第一射線;在所述第二矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn), 垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,稱為第二射線;以所述第一矩形和第二矩形共用的邊的中點(diǎn)為起始點(diǎn),分別在所述第一射線和所 述第二射線上搜索第一端點(diǎn)和第二端點(diǎn),使得所述第一矩形的最近點(diǎn)對(duì)中投影落在所述起 始點(diǎn)和所述第一端點(diǎn)之間的點(diǎn)的數(shù)量與所述第二矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn) 和所述第二端點(diǎn)之間的點(diǎn)的數(shù)量之和最大,并且所述起始點(diǎn)到所述第一端點(diǎn)的線段長度與 所述起始點(diǎn)到所述第二端點(diǎn)的線段長度之和等于所述第一矩形和第二矩形的高度之和;求在所述第一矩形所在的平面內(nèi),過所述第一端點(diǎn)平行于所述第一矩形和第二矩 形共用的邊所在直線的直線,稱為第一邊界直線,在所述第一邊界直線上,求與所述第一端 點(diǎn)距離為所述第一矩形寬度的一半的兩個(gè)點(diǎn),稱為第三端點(diǎn)、第四端點(diǎn),所述第一矩形和第 二矩形共用的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn)。求在所述第二矩形所在的平面內(nèi),過所述第二端點(diǎn)平行于所述第一矩形和第二矩 形共用的邊所在直線的直線,稱為第二邊界直線,在所述第二邊界直線上,求與所述第二端 點(diǎn)距離為所述第二矩形寬度的一半的兩個(gè)點(diǎn),稱為第五端點(diǎn)、第六端點(diǎn),所述第一矩形和第 二矩形共用的邊的兩個(gè)端點(diǎn)以及所述第五端點(diǎn)、所述第六端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂
點(diǎn)ο在本發(fā)明所述的人體跟蹤方法中,所述步驟S4中采用擬合算法計(jì)算得到表示四 肢的線段的方法為所述上臂為所述下臂的父部位,所述下臂為所述上臂的子部位,所述大 腿為所述小腿的父部位,所述小腿為所述大腿的子部位,當(dāng)父部位最近點(diǎn)與子部位的最近 點(diǎn)的比值大于某一數(shù)值時(shí),則先采用擬合算法計(jì)算父部位的姿態(tài)參數(shù),再擬合計(jì)算子部位 的姿態(tài)參數(shù),進(jìn)而得到父部位和子部位;當(dāng)父部位的最近點(diǎn)與子部位的最近點(diǎn)數(shù)量比值小 于該數(shù)值時(shí),則先擬合子部位所在的直線,再在該直線上查找一個(gè)到對(duì)應(yīng)的軀干邊線端點(diǎn) 的距離與父部位長度相等點(diǎn)作為父部位與子部位間的關(guān)節(jié)點(diǎn),然后根據(jù)該關(guān)節(jié)點(diǎn)和父部位 與軀干之間的關(guān)節(jié)點(diǎn)得到父部位,再根據(jù)該關(guān)節(jié)點(diǎn)和子部位的長度得到子部位。在本發(fā)明所述的人體跟蹤方法中,在步驟S3前,還包括根據(jù)模型重心和點(diǎn)云重心 的偏差,調(diào)整人體模型。在本發(fā)明所述的人體跟蹤方法中,在步驟S4后,還包括根據(jù)人體模型的中頭部信 息與通過所采集的點(diǎn)云計(jì)算得到的頭部的最近點(diǎn)對(duì)信息,調(diào)整模型。本發(fā)明還提供一種人體跟蹤系統(tǒng),其特征在于,包括點(diǎn)云采集設(shè)備、模型初始化單 元、跟蹤初值預(yù)測單元和人體跟蹤單元,其中,所述點(diǎn)云采集設(shè)備包括點(diǎn)云采集模塊,所述點(diǎn)云采集模塊,用于讀取當(dāng)前幀采集到的點(diǎn)云數(shù)據(jù);所述模型初始化單元,與所述人體跟蹤單元連接,用于根據(jù)人體尺寸參數(shù),采用線 段表示四肢的上臂、下臂、大腿、小腿和頭部,矩形表示軀干構(gòu)造人體模型;所述跟蹤初值預(yù)測單元,與所述模型初始化單元和所述人體跟蹤單元連接,用于 為所述人體跟蹤單元提供初始人體模型狀態(tài)信息;所述人體跟蹤單元,與所述點(diǎn)云采集設(shè)備以及所述跟蹤初值預(yù)測單元連接,用于 讀取跟蹤初值預(yù)測單元中的人體模型信息和所述點(diǎn)云采集模塊采集的到點(diǎn)云數(shù)據(jù),并以從 所述跟蹤初值預(yù)測單元中讀取的人體模型信息為初始值,對(duì)點(diǎn)云中每個(gè)點(diǎn)求取與該點(diǎn)距離 最近的人體部位,即最近點(diǎn)對(duì),并根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表 示頭部的線段,同時(shí)根據(jù)最近點(diǎn)對(duì)采用擬合算法計(jì)算得到表示四肢的線段,即計(jì)算得到人 體姿態(tài)參數(shù),然后將所述人體姿態(tài)參數(shù)傳送給所述跟蹤初值預(yù)測單元和/或輸出。在本發(fā)明所述的人體跟蹤系統(tǒng)中,所述人體跟蹤單元進(jìn)一步包括最近點(diǎn)對(duì)求取單 元,與所述最近點(diǎn)對(duì)求取單元連接的第一數(shù)據(jù)處理單元和第二數(shù)據(jù)處理單元,以及與所述 最近點(diǎn)對(duì)求取單元、所述第一數(shù)據(jù)處理單元和所述第二數(shù)據(jù)處理單元連接的控制單元,其 中所述最近點(diǎn)對(duì)求取單元,用于求取所述點(diǎn)云數(shù)據(jù)中的每個(gè)點(diǎn)到人體每個(gè)部位的距 離,比較選擇距離每個(gè)點(diǎn)最近的部位,并記錄該點(diǎn)以及該部位,從而得到每個(gè)點(diǎn)與該點(diǎn)最近 的部位的配對(duì),該處稱為最近點(diǎn)對(duì);所述第一數(shù)據(jù)處理單元,用于根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表示頭部的線段,即人體模型的軀干和頭部的姿態(tài)參數(shù);所述第二數(shù)據(jù)處理單元,用于根據(jù)最近點(diǎn)對(duì)采用非線性擬合算法計(jì)算得到表示四 肢的線段,即人體模型的四肢的姿態(tài)參數(shù);所述控制單元,用于控制所述最近點(diǎn)對(duì)求取單元、所述第一數(shù)據(jù)處理單元、所述第 二數(shù)據(jù)處理單元迭代運(yùn)行,直至滿足要求時(shí),將所述人體姿態(tài)參數(shù)傳送給所述跟蹤初值預(yù) 測單元和/或輸出。在本發(fā)明所述的人體跟蹤系統(tǒng)中,表示軀干的矩形分為共用一條邊的上下兩部分 矩形,分別為第一矩形和第二矩形,在所述最近點(diǎn)對(duì)求取單元中求最近點(diǎn)對(duì)時(shí)分別計(jì)算每 個(gè)點(diǎn)到第一矩形和第二矩形的距離,并在第一數(shù)據(jù)處理單元中根據(jù)所述第一矩形和第二矩 形的最近點(diǎn)對(duì)計(jì)算出所述第一矩形、第二矩形所在的平面,兩矩形所在平面的交線即為兩 矩形共用的邊所在直線;讓所述第一矩形和第二矩形的最近點(diǎn)對(duì)向所述兩矩形共用的邊所在直線投影,根 據(jù)所述第一矩形和第二矩形的寬度,搜索線段使得落得線段范圍內(nèi)的投影的數(shù)量最多,所 述線段的兩個(gè)端點(diǎn)即為所述第一矩形和第二矩形共用的邊的兩個(gè)頂點(diǎn);根據(jù)所述第一矩形和第二矩形的高度計(jì)算所述第一矩形和所述第二矩形的其它 頂點(diǎn),從而得到所述第一矩形和第二矩形。在本發(fā)明所述的人體跟蹤系統(tǒng)中,所述第一矩形和所第二矩形的高度固定,在所 述第一數(shù)據(jù)處理單元中計(jì)算所述分別計(jì)算所述第一矩形和所述第二矩形的其他頂點(diǎn)在所述第一矩形所在的平面內(nèi),分別求過所述第一矩形和所述第二矩形共用的邊 的兩個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,分別為第 一射線和第二射線,分別在所述第一射線和第二射線上求與所述第一射線、第二射線端點(diǎn) 距離為所述第一矩形的高度的點(diǎn),稱為第一端點(diǎn),第二端點(diǎn),所述第一矩形和第二矩形共用 的邊的兩個(gè)端點(diǎn)以及所述第一端點(diǎn)、所述第二端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);在所述第二矩形所在的平面內(nèi),分別求過所述第一矩形和第二矩形共用的邊的兩 個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,分別為第三射 線和第四射線,分別在所述第三射線和第四射線上求與所述第三射線、第四射線端點(diǎn)距離 為所述第二矩形的高度的點(diǎn),稱為第三端點(diǎn),第四端點(diǎn),所述第一矩形和所述第二矩形共用 的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。在本發(fā)明所述的人體跟蹤系統(tǒng)中,所述第一矩形和所述第二矩形高度不固定但高 度之和固定,在所述第一數(shù)據(jù)處理單元中計(jì)算所述分別計(jì)算所述第一矩形和所述第二矩形 的其他頂點(diǎn)在所述第一矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn), 垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,稱為第一射線;在所述第二矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn), 垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,稱為第二射線;以所述第一矩形和第二矩形共用的邊的中點(diǎn)為起始點(diǎn),分別在所述第一射線和所 述第二射線上搜索第一端點(diǎn)和第二端點(diǎn),使得所述第一矩形的最近點(diǎn)對(duì)中投影落在所述起 始點(diǎn)和所述第一端點(diǎn)之間的點(diǎn)的數(shù)量與所述第二矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn) 和所述第二端點(diǎn)之間的點(diǎn)的數(shù)量之和最大,并且所述起始點(diǎn)到所述第一端點(diǎn)的線段長度與所述起始點(diǎn)到所述第二端點(diǎn)的線段長度之和等于所述第一矩形和第二矩形的高度之和;求在所述第一矩形所在的平面內(nèi),過所述第一端點(diǎn)平行于所述第一矩形和第二矩 形共用的邊所在直線的直線,稱為第一邊界直線,在所述第一邊界直線上,求與所述第一端 點(diǎn)距離為所述第一矩形寬度的一半的兩個(gè)點(diǎn),稱為第三端點(diǎn)、第四端點(diǎn),所述第一矩形和第 二矩形共用的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂占.
^ \\\ 求在所述第二矩形所在的平面內(nèi),過所述第二端點(diǎn)平行于所述第一矩形和第二矩 形共用的邊所在直線的直線,稱為第二邊界直線,在所述第二邊界直線上,求與所述第二端 點(diǎn)距離為所述第二矩形寬度的一半的兩個(gè)點(diǎn),稱為第五端點(diǎn)、第六端點(diǎn),所述第一矩形和第 二矩形共用的邊的兩個(gè)端點(diǎn)以及所述第五端點(diǎn)、所述第六端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂
點(diǎn)ο在本發(fā)明所述的人體跟蹤系統(tǒng)中,在所述第二處理單元中采用擬合算法計(jì)算得到 表示四肢的線段所述上臂為所述下臂的父部位,所述下臂為所述上臂的子部位,所述大腿 為所述小腿的父部位,所述小腿為所述大腿的子部位,當(dāng)父部位最近點(diǎn)與子部位的最近點(diǎn) 的比值大于某一數(shù)值時(shí),則先采用擬合算法計(jì)算父部位的姿態(tài)參數(shù),再擬合計(jì)算子部位的 姿態(tài)參數(shù),進(jìn)而得到父部位和子部位;當(dāng)父部位的最近點(diǎn)與子部位的最近點(diǎn)數(shù)量比值小于 該數(shù)值時(shí),則先擬合子部位所在的直線,再在該直線上查找一個(gè)到對(duì)應(yīng)的軀干邊線端點(diǎn)的 距離與父部位長度相等點(diǎn)作為父部位與子部位間的關(guān)節(jié)點(diǎn),然后根據(jù)該關(guān)節(jié)點(diǎn)和父部位與 軀干之間的關(guān)節(jié)點(diǎn)得到父部位,再根據(jù)該關(guān)節(jié)點(diǎn)和子部位的長度得到子部位。在本發(fā)明所述的人體跟蹤系統(tǒng)中,還包括重心調(diào)整單元,用于在所述控制單元控 制下根據(jù)模型重心和點(diǎn)云重心的偏差,調(diào)整人體模型。在本發(fā)明所述的人體跟蹤系統(tǒng)中,還包括頭部對(duì)齊單元,用于在所述控制單元控 制下根據(jù)人體模型的中頭部信息與通過所采集的點(diǎn)云計(jì)算得到的頭部的最近點(diǎn)對(duì)信息,調(diào) 整人體模型。實(shí)施本發(fā)明的人體跟蹤方法和系統(tǒng),具有以下有益效果由于點(diǎn)云數(shù)據(jù)源等原因, 軀干部位點(diǎn)的數(shù)量較多,頭部、四肢等部位點(diǎn)數(shù)量較少,在點(diǎn)云分辨率較低以及一些如遮擋 等極端情況下,部分部位甚至不存在點(diǎn),利用本發(fā)明所提供的方法及系統(tǒng)仍然能夠很好地 構(gòu)建人體模型,分析跟蹤人體運(yùn)動(dòng)。
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,附圖中圖1是本發(fā)明一個(gè)實(shí)施例的程序流程圖;圖2是本發(fā)明一個(gè)實(shí)施例的人體模型示意圖;圖3是本發(fā)明一個(gè)實(shí)施例的點(diǎn)到線段的投影示意圖;圖4是本發(fā)明一個(gè)實(shí)施例的另一個(gè)點(diǎn)到線段的投影示意圖;圖5是本發(fā)明另一個(gè)實(shí)施例的人體模型示意圖;圖6是本發(fā)明一個(gè)實(shí)施例的中軸求取示意圖;圖7是本發(fā)明一個(gè)實(shí)施例的頭部模型初始狀態(tài)圖;圖8是本發(fā)明一個(gè)實(shí)施例的頭部模型調(diào)整后的狀態(tài)圖9是本發(fā)明一個(gè)實(shí)施例的四肢模型示意圖;圖10是本發(fā)明一個(gè)實(shí)施例的系統(tǒng)示意圖;圖11是本發(fā)明另一實(shí)施例的系統(tǒng)示意圖。
具體實(shí)施例方式如圖1所示,在本發(fā)明的人體跟蹤方法的第一實(shí)施例中,首先建立人體模型,建立 過程將在下面詳細(xì)說明。然后利用點(diǎn)云采集設(shè)備(例如立體視覺系統(tǒng)、結(jié)構(gòu)光系統(tǒng)、ToF(飛 行時(shí)間,time of flight)攝像機(jī))讀取當(dāng)前幀采集到的特定人物的點(diǎn)云數(shù)據(jù)。接著分別 計(jì)算點(diǎn)云數(shù)據(jù)中每個(gè)點(diǎn)到表示上臂、下臂、大腿、小腿、頭部的線段和表示軀干的矩形面的 距離,比較選擇距離每個(gè)點(diǎn)最近的部位,并記錄該點(diǎn)以及該部位,從而得到每個(gè)點(diǎn)與每個(gè)點(diǎn) 最近的部位的配對(duì),該處稱為最近點(diǎn)對(duì),具體計(jì)算方法將在下面將詳細(xì)說明。再接著,根據(jù) 最近點(diǎn)對(duì)計(jì)算表示軀干的矩形的四條邊線和表示頭部的線段,采用擬合算法計(jì)算表示四肢 的線段,并在計(jì)算最近點(diǎn)對(duì)步驟和計(jì)算人體模型的軀干的四條邊線、頭部線段和四肢線段 步驟之間,進(jìn)行計(jì)算迭代,以滿足需求(例如循環(huán)次數(shù)或者精度要求等)具體計(jì)算方法將在 下面詳細(xì)說明。最后,根據(jù)所得的四條邊線、和分別表示頭部和四肢的線段輸出人體模型。建立人體模型的過程如下如圖2所示,采用線段分別表示四肢的上臂、下臂、大 腿、小腿和頭部,采用矩形表示軀干,并根據(jù)人體學(xué)上的人體比例,通過人體參數(shù)建立人體 模型。所述人體參數(shù)分為尺寸參數(shù)和姿態(tài)參數(shù)兩類,其中,人體尺寸參數(shù)在跟蹤過程中 保持不變,姿態(tài)參數(shù)隨著人體運(yùn)動(dòng)而變化。跟蹤過程即計(jì)算人體的姿態(tài)參數(shù)并根據(jù)其調(diào)整 人體模型。尺寸參數(shù)可以在系統(tǒng)初始化時(shí)獲取。人體各個(gè)部位的長度與身高存在比例關(guān)系, 不同性別的不同比例有所區(qū)別,該比例關(guān)系對(duì)于本領(lǐng)域的技術(shù)人員來說,可以很容易地從 人體學(xué)中獲知。當(dāng)不考慮性別的差異時(shí),各部位尺寸與身高的比例如下表所示
權(quán)利要求
1.一種人體跟蹤方法,其特征在于,包括以下步驟51、采用線段表示四肢的上臂、下臂、大腿、小腿和頭部,矩形表示軀干,根據(jù)人體尺寸 參數(shù)建立人體模型;52、點(diǎn)云采集設(shè)備讀取當(dāng)前幀采集到的人體點(diǎn)云數(shù)據(jù);53、分別計(jì)算人體點(diǎn)云數(shù)據(jù)中每個(gè)點(diǎn)到表示上臂、下臂、大腿、小腿、頭部的線段和表示 軀干的矩形面的距離,比較選擇距離該點(diǎn)最近的部位,并記錄該點(diǎn)以及該部位,從而得到每 個(gè)點(diǎn)與該點(diǎn)最近的部位的配對(duì),該處稱為最近點(diǎn)對(duì);54、根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表示頭部的線段,同時(shí)根據(jù) 最近點(diǎn)對(duì)采用擬合算法計(jì)算得到表示四肢的線段,即計(jì)算得到人體姿態(tài)參數(shù);55、迭代步驟S3、S4,直至滿足要求時(shí)退出;56、根據(jù)所得的表示軀干的四條邊線和分別表示頭部和四肢的線段輸出人體模型。
2.根據(jù)權(quán)利要求1所述的人體跟蹤方法,其特征在于,所述步驟Sl中的用于表示軀干 的矩形分為共用一條邊的上下兩部分矩形,分別為第一矩形和第二矩形,在所述步驟S3中 求最近點(diǎn)對(duì)時(shí)分別計(jì)算每個(gè)點(diǎn)到第一矩形和第二矩形的距離,并在所述步驟S4中根據(jù)所 述第一矩形和第二矩形的最近點(diǎn)對(duì)計(jì)算出所述第一矩形、第二矩形所在的平面,兩矩形所 在平面的交線即為兩矩形共用的邊所在直線;讓所述第一矩形和第二矩形的最近點(diǎn)對(duì)向所述兩矩形共用的邊所在直線投影,根據(jù)所 述第一矩形和第二矩形的寬度,搜索線段使得落得線段范圍內(nèi)的投影的數(shù)量最多,所述線 段的兩個(gè)端點(diǎn)即為所述第一矩形和第二矩形共用的邊的兩個(gè)頂點(diǎn);根據(jù)所述第一矩形和第二矩形的高度計(jì)算所述第一矩形和所述第二矩形的其它頂點(diǎn), 從而得到所述第一矩形和第二矩形。
3.根據(jù)權(quán)利要求2所述的人體跟蹤方法,其特征在于,所述第一矩形和第二矩形的高 度固定,所述計(jì)算所述第一矩形和第二矩形的其它頂點(diǎn)的方法為在所述第一矩形所在的平面內(nèi),分別求過所述第一矩形和所述第二矩形共用的邊的兩 個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,分別為第一射 線和第二射線,分別在所述第一射線和第二射線上求與所述第一射線、第二射線端點(diǎn)距離 為所述第一矩形的高度的點(diǎn),稱為第一端點(diǎn),第二端點(diǎn),所述第一矩形和所述第二矩形共用 的邊的兩個(gè)端點(diǎn)以及所述第一端點(diǎn)、所述第二端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);在所述第二矩形所在的平面內(nèi),分別求過所述第一矩形和第二矩形共用的邊的兩個(gè)端 點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,分別為第三射線和 第四射線,分別在所述第三射線和第四射線上求與所述第三射線、第四射線端點(diǎn)距離為所 述第二矩形的高度的點(diǎn),稱為第三端點(diǎn),第四端點(diǎn),所述第一矩形和所述第二矩形共用的邊 的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。
4.根據(jù)權(quán)利要求2所述的人體跟蹤方法,其特征在于,所述第一矩形和第二矩形高度 不固定但高度之和固定,所述計(jì)算所述第一矩形和第二矩形其它頂點(diǎn)的方法為在所述第一矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn),垂直 于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,稱為第一射線;在所述第二矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn),垂直 于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,稱為第二射線;以所述第一矩形和第二矩形共用的邊的中點(diǎn)為起始點(diǎn),分別在所述第一射線和所述第 二射線上搜索第一端點(diǎn)和第二端點(diǎn),使得所述第一矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn) 和所述第一端點(diǎn)之間的點(diǎn)的數(shù)量與所述第二矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn)和所 述第二端點(diǎn)之間的點(diǎn)的數(shù)量之和最大,并且所述起始點(diǎn)到所述第一端點(diǎn)的線段長度與所述 起始點(diǎn)到所述第二端點(diǎn)的線段長度之和等于所述第一矩形和第二矩形的高度之和;求在所述第一矩形所在的平面內(nèi),過所述第一端點(diǎn)平行于所述第一矩形和第二矩形共 用的邊所在直線的直線,稱為第一邊界直線,在所述第一邊界直線上,求與所述第一端點(diǎn)距 離為所述第一矩形寬度的一半的兩個(gè)點(diǎn),稱為第三端點(diǎn)、第四端點(diǎn),所述第一矩形和第二矩 形共用的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);求在所述第二矩形所在的平面內(nèi),過所述第二端點(diǎn)平行于所述第一矩形和第二矩形共 用的邊所在直線的直線,稱為第二邊界直線,在所述第二邊界直線上,求與所述第二端點(diǎn)距 離為所述第二矩形寬度的一半的兩個(gè)點(diǎn),稱為第五端點(diǎn)、第六端點(diǎn),所述第一矩形和第二矩 形共用的邊的兩個(gè)端點(diǎn)以及所述第五端點(diǎn)、所述第六端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。
5.根據(jù)權(quán)利要求1所述的人體跟蹤方法,其特征在于,所述步驟S4中采用擬合算法計(jì) 算得到表示四肢的線段的方法為所述上臂為所述下臂的父部位,所述下臂為所述上臂的 子部位,所述大腿為所述小腿的父部位,所述小腿為所述大腿的子部位,當(dāng)父部位最近點(diǎn)與 子部位的最近點(diǎn)的比值大于某一數(shù)值時(shí),則先采用擬合算法計(jì)算父部位的姿態(tài)參數(shù),再擬 合計(jì)算子部位的姿態(tài)參數(shù),進(jìn)而得到父部位和子部位;當(dāng)父部位的最近點(diǎn)與子部位的最近 點(diǎn)數(shù)量比值小于該數(shù)值時(shí),則先擬合子部位所在的直線,再在該直線上查找一個(gè)到對(duì)應(yīng)的 軀干邊線端點(diǎn)的距離與父部位長度相等點(diǎn)作為父部位與子部位間的關(guān)節(jié)點(diǎn),然后根據(jù)該關(guān) 節(jié)點(diǎn)和父部位與軀干之間的關(guān)節(jié)點(diǎn)得到父部位,再根據(jù)該關(guān)節(jié)點(diǎn)和子部位的長度得到子部 位。
6.根據(jù)權(quán)利要求1所述的人體跟蹤方法,其特征在于,在步驟S3前,還包括根據(jù)模型重 心和點(diǎn)云重心的偏差,調(diào)整人體模型。
7.根據(jù)權(quán)利要求1所述的人體跟蹤方法,其特征在于,在步驟S4后,還包括根據(jù)人體模 型的中頭部信息與通過所采集的點(diǎn)云計(jì)算得到的頭部的最近點(diǎn)對(duì)信息,調(diào)整模型。
8.一種人體跟蹤系統(tǒng),其特征在于,包括點(diǎn)云采集設(shè)備、模型初始化單元、跟蹤初值預(yù) 測單元和人體跟蹤單元,其中,所述點(diǎn)云采集設(shè)備包括點(diǎn)云采集模塊,所述點(diǎn)云采集模塊,用于讀取當(dāng)前幀采集到的點(diǎn)云數(shù)據(jù);所述模型初始化單元,與所述人體跟蹤單元連接,用于根據(jù)人體尺寸參數(shù),采用線段表 示四肢的上臂、下臂、大腿、小腿和頭部,矩形表示軀干構(gòu)造人體模型;所述跟蹤初值預(yù)測單元,與所述模型初始化單元和所述人體跟蹤單元連接,用于為所 述人體跟蹤單元提供初始人體模型狀態(tài)信息;所述人體跟蹤單元,與所述點(diǎn)云采集設(shè)備以及所述跟蹤初值預(yù)測單元連接,用于讀取 跟蹤初值預(yù)測單元中的人體模型信息和所述點(diǎn)云采集模塊采集的到點(diǎn)云數(shù)據(jù),并以從所述 跟蹤初值預(yù)測單元中讀取的人體模型信息為初始值,對(duì)點(diǎn)云中每個(gè)點(diǎn)求取與該點(diǎn)距離最近 的人體部位,即最近點(diǎn)對(duì),并根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表示頭 部的線段,同時(shí)根據(jù)最近點(diǎn)對(duì)采用擬合算法計(jì)算得到表示四肢的線段,即計(jì)算得到人體姿 態(tài)參數(shù),然后將所述人體姿態(tài)參數(shù)傳送給所述跟蹤初值預(yù)測單元和/或輸出。
9.根據(jù)權(quán)利要求8所述的人體跟蹤系統(tǒng),其特征在于,所述人體跟蹤單元進(jìn)一步包括 最近點(diǎn)對(duì)求取單元,與所述最近點(diǎn)對(duì)求取單元連接的第一數(shù)據(jù)處理單元和第二數(shù)據(jù)處理單 元,以及與所述最近點(diǎn)對(duì)求取單元、所述第一數(shù)據(jù)處理單元和所述第二數(shù)據(jù)處理單元連接 的控制單元,其中所述最近點(diǎn)對(duì)求取單元,用于求取所述點(diǎn)云數(shù)據(jù)中的每個(gè)點(diǎn)到人體每個(gè)部位的距離, 比較選擇距離每個(gè)點(diǎn)最近的部位,并記錄該點(diǎn)以及該部位,從而得到每個(gè)點(diǎn)與該點(diǎn)最近的 部位的配對(duì),該處稱為最近點(diǎn)對(duì);所述第一數(shù)據(jù)處理單元,用于根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表 示頭部的線段,即人體模型的軀干和頭部的姿態(tài)參數(shù);所述第二數(shù)據(jù)處理單元,用于根據(jù)最近點(diǎn)對(duì)采用非線性擬合算法計(jì)算得到表示四肢的 線段,即人體模型的四肢的姿態(tài)參數(shù);所述控制單元,用于控制所述最近點(diǎn)對(duì)求取單元、所述第一數(shù)據(jù)處理單元、所述第二數(shù) 據(jù)處理單元迭代運(yùn)行,直至滿足要求時(shí),將所述人體姿態(tài)參數(shù)傳送給所述跟蹤初值預(yù)測單 元和/或輸出。
10.根據(jù)權(quán)利要求9所述的人體跟蹤系統(tǒng),其特征在于,表示軀干的矩形分為共用一條 邊的上下兩部分矩形,分別為第一矩形和第二矩形,在所述最近點(diǎn)對(duì)求取單元中求最近點(diǎn) 對(duì)時(shí)分別計(jì)算每個(gè)點(diǎn)到第一矩形和第二矩形的距離,并在第一數(shù)據(jù)處理單元中根據(jù)所述第 一矩形和第二矩形的最近點(diǎn)對(duì)計(jì)算出所述第一矩形、第二矩形所在的平面,兩矩形所在平 面的交線即為兩矩形共用的邊所在直線;讓所述第一矩形和第二矩形的最近點(diǎn)對(duì)向所述兩矩形共用的邊所在直線投影,根據(jù)所 述第一矩形和第二矩形的寬度,搜索線段使得落得線段范圍內(nèi)的投影的數(shù)量最多,所述線 段的兩個(gè)端點(diǎn)即為所述第一矩形和第二矩形共用的邊的兩個(gè)頂點(diǎn);根據(jù)所述第一矩形和第二矩形的高度計(jì)算所述第一矩形和所述第二矩形的其它頂點(diǎn), 從而得到所述第一矩形和第二矩形。
11.根據(jù)權(quán)利要求10所述的人體跟蹤系統(tǒng),其特征在于,所述第一矩形和所第二矩形 的高度固定,在所述第一數(shù)據(jù)處理單元中計(jì)算所述分別計(jì)算所述第一矩形和所述第二矩形 的其他頂點(diǎn)在所述第一矩形所在的平面內(nèi),分別求過所述第一矩形和所述第二矩形共用的邊的兩 個(gè)端點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,分別為第一射 線和第二射線,分別在所述第一射線和第二射線上求與所述第一射線、第二射線端點(diǎn)距離 為所述第一矩形的高度的點(diǎn),稱為第一端點(diǎn),第二端點(diǎn),所述第一矩形和第二矩形共用的邊 的兩個(gè)端點(diǎn)以及所述第一端點(diǎn)、所述第二端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);在所述第二矩形所在的平面內(nèi),分別求過所述第一矩形和第二矩形共用的邊的兩個(gè)端 點(diǎn),垂直于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,分別為第三射線和 第四射線,分別在所述第三射線和第四射線上求與所述第三射線、第四射線端點(diǎn)距離為所 述第二矩形的高度的點(diǎn),稱為第三端點(diǎn),第四端點(diǎn),所述第一矩形和所述第二矩形共用的邊 的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。
12.根據(jù)權(quán)利要求10所述的人體跟蹤系統(tǒng),其特征在于,所述第一矩形和所述第二矩 形高度不固定但高度之和固定,在所述第一數(shù)據(jù)處理單元中計(jì)算所述分別計(jì)算所述第一矩形和所述第二矩形的其他頂點(diǎn)在所述第一矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn),垂直 于所述第一矩形和所述第二矩形共用的邊,且方向向上的射線,稱為第一射線;在所述第二矩形所在的平面內(nèi),求過所述第一矩形和第二矩形共用的邊的中點(diǎn),垂直 于所述第一矩形和所述第二矩形共用的邊,且方向向下的射線,稱為第二射線;以所述第一矩形和第二矩形共用的邊的中點(diǎn)為起始點(diǎn),分別在所述第一射線和所述第 二射線上搜索第一端點(diǎn)和第二端點(diǎn),使得所述第一矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn) 和所述第一端點(diǎn)之間的點(diǎn)的數(shù)量與所述第二矩形的最近點(diǎn)對(duì)中投影落在所述起始點(diǎn)和所 述第二端點(diǎn)之間的點(diǎn)的數(shù)量之和最大,并且所述起始點(diǎn)到所述第一端點(diǎn)的線段長度與所述 起始點(diǎn)到所述第二端點(diǎn)的線段長度之和等于所述第一矩形和第二矩形的高度之和;求在所述第一矩形所在的平面內(nèi),過所述第一端點(diǎn)平行于所述第一矩形和第二矩形共 用的邊所在直線的直線,稱為第一邊界直線,在所述第一邊界直線上,求與所述第一端點(diǎn)距 離為所述第一矩形寬度的一半的兩個(gè)點(diǎn),稱為第三端點(diǎn)、第四端點(diǎn),所述第一矩形和第二矩 形共用的邊的兩個(gè)端點(diǎn)以及所述第三端點(diǎn)、所述第四端點(diǎn)構(gòu)成所述第一矩形的四個(gè)頂點(diǎn);求在所述第二矩形所在的平面內(nèi),過所述第二端點(diǎn)平行于所述第一矩形和第二矩形共 用的邊所在直線的直線,稱為第二邊界直線,在所述第二邊界直線上,求與所述第二端點(diǎn)距 離為所述第二矩形寬度的一半的兩個(gè)點(diǎn),稱為第五端點(diǎn)、第六端點(diǎn),所述第一矩形和第二矩 形共用的邊的兩個(gè)端點(diǎn)以及所述第五端點(diǎn)、所述第六端點(diǎn)構(gòu)成所述第二矩形的四個(gè)頂點(diǎn)。
13.根據(jù)權(quán)利要求10所述的人體跟蹤系統(tǒng),其特征在于,在所述第二處理單元中采用 擬合算法計(jì)算得到表示四肢的線段所述上臂為所述下臂的父部位,所述下臂為所述上臂 的子部位,所述大腿為所述小腿的父部位,所述小腿為所述大腿的子部位,當(dāng)父部位最近點(diǎn) 與子部位的最近點(diǎn)的比值大于某一數(shù)值時(shí),則先采用擬合算法計(jì)算父部位的姿態(tài)參數(shù),再 擬合計(jì)算子部位的姿態(tài)參數(shù),進(jìn)而得到父部位和子部位;當(dāng)父部位的最近點(diǎn)與子部位的最 近點(diǎn)數(shù)量比值小于該數(shù)值時(shí),則先擬合子部位所在的直線,再在該直線上查找一個(gè)到對(duì)應(yīng) 的軀干邊線端點(diǎn)的距離與父部位長度相等點(diǎn)作為父部位與子部位間的關(guān)節(jié)點(diǎn),然后根據(jù)該 關(guān)節(jié)點(diǎn)和父部位與軀干之間的關(guān)節(jié)點(diǎn)得到父部位,再根據(jù)該關(guān)節(jié)點(diǎn)和子部位的長度得到子 部位。
14.根據(jù)權(quán)利要求9所述的人體跟蹤系統(tǒng),其特征在于,還包括重心調(diào)整單元,用于在 所述控制單元控制下根據(jù)模型重心和點(diǎn)云重心的偏差,調(diào)整人體模型。
15.根據(jù)權(quán)利要求9所述的人體跟蹤系統(tǒng),其特征在于,還包括頭部對(duì)齊單元,用于在 所述控制單元控制下根據(jù)人體模型的中頭部信息與通過所采集的點(diǎn)云計(jì)算得到的頭部的 最近點(diǎn)對(duì)信息,調(diào)整人體模型。
全文摘要
本發(fā)明公開了一種人體跟蹤方法和系統(tǒng),用于解決采用點(diǎn)云建模中,當(dāng)頭部、四肢等部位被遮擋不存在點(diǎn)或點(diǎn)云分辨率較低時(shí),如何構(gòu)建模型中該部位位置姿態(tài)的問題。本發(fā)明中的方法采用擬合算法代替以前的配準(zhǔn)算法計(jì)算人體部位的姿態(tài)。首先根據(jù)點(diǎn)云數(shù)據(jù)和人體模型姿態(tài)數(shù)據(jù)計(jì)算得出人體點(diǎn)云中每個(gè)點(diǎn)以及與該點(diǎn)最近的部位的配對(duì),該處稱為最近點(diǎn)對(duì),然后根據(jù)最近點(diǎn)對(duì)計(jì)算得到表示軀干的矩形的四條邊線和表示頭部的線段,同時(shí)根據(jù)最近點(diǎn)對(duì)采用擬合算法計(jì)算得到表示四肢的線段,最后根據(jù)所得的四條邊線、和分別表示頭部和四肢的線段輸出人體模型。從而保證,在極端情況下,利用本發(fā)明提供的方法仍然能夠很好地構(gòu)建人體模型,分析跟蹤人體運(yùn)動(dòng)。
文檔編號(hào)G06T7/20GK102074019SQ20101060987
公開日2011年5月25日 申請(qǐng)日期2010年12月28日 優(yōu)先權(quán)日2010年12月28日
發(fā)明者師丹瑋, 柳林祥, 程俊, 賀歡, 趙文闖 申請(qǐng)人:深圳泰山在線科技有限公司