Arens|作品集
← 所有作品
AI 姿勢辨識全端網頁應用

KyoudoTrack|弓道射法分析系統

上傳一段射箭影片、在靶圖上點選中靶位置,系統自動辨識射法八節、評估十文字姿勢是否端正,讓練習者客觀檢視自己的射型。

期間:2025/12~2026/10角色:獨立開發(演算法設計、前後端)
全螢幕影片分析:骨架、十字線與十文字評估
分段結果穩定可信整段影片收集完再一次判斷,以動態規劃(Viterbi)限制八節只能依序前進,解決逐幀判斷時來回跳動、順序倒退的問題。
把專業知識變成可量化的規則從弓道射法的定義出發,依節段計算中心線、肩、臀、箭線、視線的偏差角度,並以射手本人的左右標示方向。
效能與資料量優化影片改在瀏覽器本機播放、關節點精簡並 gzip 壓縮:單次回應約 8 MB 降到 0.2 MB,分析時間縮短約三成。

射法八節逐節分析

點選下方節段,查看系統在影片每個節段疊加的骨架、參考線與十文字評估。

弓構
打起
大三
引分
會
離
殘心

技術重點

射法八節自動分段

關節點特徵以軀幹長度正規化,不受拍攝距離影響,並修正雙手交疊時的左右手誤判。對每一幀計算各節段分數後,以動態規劃(Viterbi)求出只依射法順序前進的最合理序列,解決逐幀判斷時動作來回跳動、順序倒退的問題;也支援從中途開始拍攝與連續多射。

十文字評估與偏差方向

依節段切換三重/五重十文字,計算身體中心線、肩線、臀線、箭線與視線的偏差角度,並以射手本人的左右標示方向(例如「左肩高 2.3°」)。「物見」轉頭會讓鼻子偏移,因此改以耳朵作為頭部參考點,避免把轉頭誤判成身體傾斜。

即時影像疊加

後端只負責運算,骨架、參考十字線、雙手連線全部由前端以 Canvas 即時繪製,每一層都可獨立開關。透過 requestVideoFrameCallback 搭配影片時間戳逐幀同步,手機拍攝的可變幀率影片也能精準對齊。

效能與儲存優化

後端不再重新編碼與保存影片,改由瀏覽器直接播放本機檔案;關節點改用精簡格式並以 gzip 壓縮,單次回應由約 8 MB 降至約 0.2 MB,分析時間縮短約三成;過期資料自動清理。

使用流程與報表

在靶圖上標記中靶位置
上傳影片後,在靶圖上點選中靶位置。
射法八節各節段時長
分析結果:各節段時長,可匯出 Excel。
Excel 分析工作表:各節段最大偏差
Excel 分析工作表:每一節、每個十文字項目最嚴重的偏差、方向與發生時間,超出門檻以紅色標示。
Excel 射箭紀錄工作表
射箭紀錄工作表:各節段時長與中靶位置圖,每射一筆,可長期追蹤。

成果

以實際練習影片驗證,系統切分出的弓構至殘心各節段與影片畫面相符。開發時從弓道射法的定義出發設計判斷規則,並以資料曲線與影像比對持續修正演算法。

使用技術

前端
Angular 18、TypeScript、PrimeNG、HTML5 Canvas
後端
Python、FastAPI、MediaPipe Pose、OpenCV、NumPy、openpyxl