吳 博
(浙江旅游職業學院 公共教學部,浙江 杭州 311200)
雖然跑步鍛煉的方式很受歡迎,但大部分跑步者會出現跑姿失常甚至出錯的情況.這種錯誤的姿勢會給他們的身體帶來難以想象的傷害,甚至是永久性的傷害[1].目前常用的判斷跑步姿勢是否標準的方法是通過人為直接觀察得出判斷結論,但這種方法存在許多局限性.
當前已有物體運動軌跡監測方法的相關研究,例如幀間差分法、光流法和背景相減法等.文獻[2]利用幀間差分法進行地區篩選,使用輕量級卷積神經網絡進行可疑區域的超分辨率重建,強化選定區域的細節特征后再進行目標檢測.該方法具有較好的環境適應性,但容易產生空穴效應;文獻[3]提出在T-1幀跟蹤結果的基礎上使用光流法計算跟蹤目標的運動矢量,將初選框區域作為區域卷積網絡的輸入,計算目標的精確跟蹤結果.該方法可對位移較大的幀、幀率進行調整,檢測速度快,檢測結果也比較精確,能夠實時處理.但該方法對算法以及硬件的要求比較復雜,實時性差;文獻[4]采用背景差分法的基本原理,重點設計了監控視頻中的運動目標檢測的流程及相關算法,結合Python與OpenCV的編程,混合高斯的建模過程,實現了運動目標的檢測.但該方法對環境要求較高,當環境改變時,算法將變得更加敏感,并在運行中產生負面影響.
為此,提出了基于KNN算法的跑步運動軌跡監測系統設計,通過高速攝像機、軌跡跟蹤模塊對運動物體進行跟蹤拍攝,通過射頻子模塊、上下位機模塊與控制子模塊進行信息收集、傳遞以及處理工作,利用KNN算法識別運動姿勢,實驗結果證明該方法可改善運動軌跡監控系統的準確性.
圖1顯示了跑步運動軌跡監測系統的總體框架,層間調用可以通過特定的接口或方法,盡可能隔離不同層間功能,從而簡化系統流程,保證其良好的可擴展性[5].

圖1 系統總體框架
表現層是一個面向用戶的界面,它能與用戶進行交互[6].其主要職責是收集用戶輸入和顯示數據,對網頁導航進行控制,并將用戶輸入傳遞給業務邏輯層,后者需要對用戶輸入進行驗證[7].它具有視頻監控集中、視頻抽象長度自適應的功能,與用戶交互次數少,表現層將實時處理后產生的原始監控視頻和摘要視頻顯示在同一界面上[8].
基于業務和需求分析,應用層主要負責業務邏輯的實現.本層主要完成背景處理部分、前景處理部分和前景背景拼接部分.背景處理部分對每一幀原始視頻圖像進行建模和分析,并對背景和前景進行定位;在此基礎上,對每一幀圖像的信息進行二值化處理,根據被分析圖像的前景和背景區域位置,生成標記為前景和背景區域位置的二值圖像,依據二值圖和原始視頻圖,得出每幀圖像中每個目標的前景掩碼[9].
前處理部分分析處理每一幀監控視頻,鎖定移動對象,提取其軌跡,并將其存儲在一個虛擬“容器”(即軌跡集)中[10].在滿足充填條件后,所有跟蹤“容器”,到視頻濃度空間按一定規則進行充填,然后在適當的集中空間內截斷跟蹤,防止情況濃縮視頻中只有一個移動的目標,濃度效應無法實現[11-13].切斷后,通過 alpha混合法將主體部分粘貼在一起,以便于后續編碼;參與下一個軌跡填充,以避免信息丟失和軌跡中斷.前景背景拼接部分將前景背景合并編碼為代碼,生成視頻摘要.
數據層主要包括系統使用的資源,包括輸入數據及輸出數據.多個攝像機生成監控視頻作為輸入數據,輸出數據為實時集中處理生成的視頻文件[14].
至此,系統的總體框架構建完畢,基于此設計系統的硬件和軟件結構部分.
基于KNN算法的跑步運動軌跡監測系統硬件結構如圖2所示.

圖2 基于KNN算法的跑步運動軌跡監測系統硬件結構
本文所設計的跑步運動軌跡監測系統硬件結構由攝像頭和軌跡跟蹤兩個模塊組成,軌跡跟蹤模塊又由射頻子模塊、控制子模塊及上下位機模塊組成.以下分別對系統硬件各模塊進行設計.
利用高速攝像機對跑步機上的運動物體進行拍攝,選擇多個攝像機同時拍攝,實現多角度觀測.依據運動模型建立的原理,采樣角分為后角和側角兩種,攝像機放在物體的背面和側面,通過視頻逐幀播放,對運動目標的運動軌跡和運動過程進行分析,根據所建立的模型和標記點進行路徑跟蹤[15-17].
使用IMX179型號攝像頭,其模組如圖3所示.

圖3 IMX179型號攝像頭模組
采用工業級光學全波鏡頭,視角可任意選擇,且圖像清晰,可外加補光夜視功能.標準USB2.0插頭速度可達到480Mbps,UVC驅動程序即插即用.
軌跡跟蹤模塊主要是由射頻子模塊、控制子模塊、上下位機模塊和指示燈4個部分組成,射頻子模塊用于處理攝像機拍攝的圖像,由RF子模塊進行下變頻處理、A/D轉換,通過時間基準、采樣判斷、信號分析等方法采集運行軌道信號,并發送到控制子模塊;控制子模塊用于對RF子模塊數據進行控制和處理,控制RF子模塊的工作方式和時序,兩個子系統之間的通信是通過PCI總線實現的.利用上下位機模塊處理相關數據,通過指示燈顯示跟蹤結果[18].
2.2.1 射頻子模塊
射頻子模塊的核心為RF收發器,該模塊還包括功率放大器、天線開關模塊、前端模塊、雙工器、濾波器和合成模塊.功率放大器用于放大收發器輸出的射頻信號,雙工器是射頻子模塊的核心處理單元,主要包括接收單元和發送單元.首先對接收到的信號進行濾波放大處理,然后轉換,最后輸出基帶信號.通常使用零中頻和數字低中頻作為射頻基帶,前端模塊結合開關和射頻濾波器完成天線的收發切換、頻段選取、濾波等工作[19].
2.2.2 控制子模塊
控制子模塊完全獨立于數據空間,可同時獲取指令和操作數,實現不同程序空間的數據傳輸.控制子模塊結構如圖4所示.

圖4 控制子模塊
該控制器分4個階段實現:指令獲取、指令解碼、操作數獲取和指令執行.抽取指令占用PAB和PRDB,解碼指令不占用總線;通過使用DRAB和DRDB獲取操作數,并在指令執行時將執行結果寫回數據內存,可以極大地提高指令的速度.
2.2.3 上下位機模塊
主機安裝普通桌面電腦,操作系統為Windows XP,主要分析機器人運行軌跡.它的作用是向下位機發送各種任務中斷信息,刺激下位機調用相應的程序來完成任務.485模塊采用專用PCI總線實現上下級計算機間的通信,并將差分信號與下級計算機連接,實現可靠的數據傳輸.
通過專用PCI總線,485模塊完成上下位機之間的通信,并與下位機連接,實現數據的可靠傳輸.若將PWM輸出連接到電機驅動端,就需要進行光電隔離.它的作用是隔離強、弱電流,使驅動裝置直接連接到電機上.
近鄰算法又稱K-近鄰算法,它選擇一個距離函數,計算出測試樣本和訓練樣本在多維空間中的距離,選擇K個最接近的訓練樣本點,然后根據點的類型對測試樣本進行判別[20-22].身體穩定是跑步過程中的重要原則,但許多跑步者在實際運動過程中,身體擺動的幅度偏差較大,使用了kinovea跟蹤運動目標的水平位移軟件,可以直接反映跑步過程中運動目標的左右擺動.根據這一標準,將其分成3類:A類為穩定底盤,B類為穩定底盤的左行駛過程,C類為右行駛過程.
在左腳第一次完全落地時,為統一樣本的大小,每個觀察點選取60個樣本.試驗期間,共采集14組樣本數據,其中 A類5組,B類6組,C類3組.每個訓練樣本的特征數是60個,選擇K值為3.圖5顯示了 KNN算法的實現過程.

圖5 KNN算法流程
以14組樣本為訓練樣本,將1組樣本進行分類,訓練測試用來保存訓練樣本的特征標簽,測試數據特征用于測試數據文件存儲;各測試樣本之間的歐氏距離用k=3表示,歐氏距離以A2、A3、B3和標簽之間最小距離表示,最大距離以A表示.所以,根據分類結果,該組訓練樣本屬于 A類,即底盤運動目標相對穩定.
基于kinovea的運動軌跡監測軟件,將網格線插入視頻,選擇肩胛骨的后部位置作為觀察點,逐幀播放.該軟件能夠跟蹤觀測點的位置,自動記錄每個幀對應的位置.跟蹤過程中,由于不能清晰地識別特征點,造成跟蹤誤差.因而在路徑跟蹤時,需要進行人工修正,將原視頻放大幾倍,并手動調整跟蹤點以獲得更精確的位置.一幀一幀地播放視頻、分析視頻.因為在視頻中可以獲得跑步機的高度和參數,所以采用移動尺寸法(內插距離法)來計算.根據運動目標的實際高度,可以獲得視頻中圖像的比例.在此基礎上,確定出運動物體的實際位置.
以基于KNN算法跑步運動姿態識別結果為依據,構建跑步運動方程為:
(1)
Step1:選定觀察點
追蹤過程中,選擇跑步者后的白色標記作為觀察點.
Step2:細化跟蹤路徑
為方便直接觀察路徑跟蹤過程結果,可對矩陣進行色彩和線條設置.
Step3:路徑跟蹤
回放視頻,分幀播放視頻,根據每幀觀察點的位置,自動跟蹤和標記觀察點的軌跡.同時,如果有一個路徑跟蹤錯誤,就可以手動對錯誤幀進行校準,以便Kinovea軟件繼續跟蹤.
Step4:結束跟蹤
完成所選視頻路徑跟蹤后,右擊該區域結束路徑跟蹤.在運動跟蹤過程中,運動軌跡保持在觀測點處.
Step5:數據分析與保存
在路徑跟蹤結束后,右鍵單擊軌跡進行數據分析,可獲得此期間選定觀測點的部分數據.該數據可直接以表格的形式保存,而運動軌跡圖則可以圖片的形式保存.
至此,系統的硬件及軟件部分設計完成,對該系統的性能進行仿真實驗,并對比該方法與文獻[2]~[4]方法的精確度差異.
為了驗證基于KNN算法的跑步運動軌跡監測系統設計合理性,進行實驗驗證分析.跑步者要正確擺動手臂,在跑步機上跑步,手臂要完成90°或接近90°,并且手臂要貼緊身體.拍攝用到的攝像頭參數如表1所示.

表1 攝像頭參數
采用上述參數的攝像頭拍攝一段120幀,200 mm*200 mm的人體跑步視頻,搭建仿真實驗平臺如圖6所示.

圖6 實驗平臺
分別使用文獻[2]方法、文獻[3]方法、文獻[4]方法和所提方法,從正面和背面兩個角度分析跑步運動軌跡監測精準度.
選擇正面角度拍攝的視頻圖像分析,以跑步過程中身體左右擺動幅度偏差為原則,將不同方法進行對比分析,對比結果如圖7所示.
由圖7可知,水平坐標下,文獻[2]方法與實際值波動幅度一致,但水平坐標不一致;文獻[3]方法不僅與實際值波動幅度不一致,而且水平坐標也不一致;文獻[4]方法不僅與實際值波動幅度不一致,而且水平坐標也不一致;所提方法與實際值波動幅度一致,且水平坐標基本一致,波動偏差為0.1 mm.

(a)水平坐標

(b)垂直坐標圖7 正面角度不同方法身體左右擺動幅度偏差對比分析
垂直坐標下,文獻[2]方法不僅與實際值波動幅度不一致,而且垂直坐標也不一致;文獻[3]方法不僅與實際值波動幅度不一致,而且垂直坐標也不一致;文獻[4]方法與實際值波動幅度相差較大,而且垂直坐標也不一致;所提方法與實際值波動幅度一致,且垂直坐標基本一致,波動偏差為0.2 mm.
選擇背面角度拍攝的視頻圖像分析,將不同方法進行對比分析,對比結果如圖8所示.
由圖8可知,水平坐標下,文獻[2]方法與實際值波動幅度不一致,水平坐標也不一致;文獻[3]方法和文獻[4]方法不僅與實際值波動幅度不一致,而且水平坐標也不一致;所提方法與實際值波動幅度一致,且水平坐標基本一致,波動偏差為0.05 mm.

(a)水平坐標

(b)垂直坐標圖8 背面角度不同方法身體左右擺動幅度偏差對比分析
垂直坐標下,不同方法與實際值波動幅度一致,但只有所提方法與實際值垂直坐標一致,波動偏差為0.03 mm.
通過上述分析可知,利用所提方法監測的跑步運動軌跡與實際軌跡一致.
本文提出的基于KNN算法的跑步運動軌跡監測系統,通過Kinovea運動分析軟件,獲取跟蹤點的運動軌跡和相關位置信息.采用 KNN算法對跟蹤軌跡進行分類與計算,并使用計算機監測跟蹤過程.通過實驗結果可知,該系統正面和背面兩個角度下的跑步運動軌跡監測誤差較小,提高了監測結果的準確性.但由于條件限制,還具有一定局限性,今后的研究可以從上下機模塊方面著手,降低信息采集過程中的誤差,進一步完善運動軌跡檢測系統.