KyoudoTrack|弓道射法分析系統
上傳一段射箭影片、在靶圖上點選中靶位置,系統自動辨識射法八節、評估十文字姿勢是否端正,讓練習者客觀檢視自己的射型。
期間:2025/12~2026/10角色:獨立開發(演算法設計、前後端)

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







技術重點
射法八節自動分段
關節點特徵以軀幹長度正規化,不受拍攝距離影響,並修正雙手交疊時的左右手誤判。對每一幀計算各節段分數後,以動態規劃(Viterbi)求出只依射法順序前進的最合理序列,解決逐幀判斷時動作來回跳動、順序倒退的問題;也支援從中途開始拍攝與連續多射。
十文字評估與偏差方向
依節段切換三重/五重十文字,計算身體中心線、肩線、臀線、箭線與視線的偏差角度,並以射手本人的左右標示方向(例如「左肩高 2.3°」)。「物見」轉頭會讓鼻子偏移,因此改以耳朵作為頭部參考點,避免把轉頭誤判成身體傾斜。
即時影像疊加
後端只負責運算,骨架、參考十字線、雙手連線全部由前端以 Canvas 即時繪製,每一層都可獨立開關。透過 requestVideoFrameCallback 搭配影片時間戳逐幀同步,手機拍攝的可變幀率影片也能精準對齊。
效能與儲存優化
後端不再重新編碼與保存影片,改由瀏覽器直接播放本機檔案;關節點改用精簡格式並以 gzip 壓縮,單次回應由約 8 MB 降至約 0.2 MB,分析時間縮短約三成;過期資料自動清理。
使用流程與報表




成果
以實際練習影片驗證,系統切分出的弓構至殘心各節段與影片畫面相符。開發時從弓道射法的定義出發設計判斷規則,並以資料曲線與影像比對持續修正演算法。
使用技術
- 前端
- Angular 18、TypeScript、PrimeNG、HTML5 Canvas
- 後端
- Python、FastAPI、MediaPipe Pose、OpenCV、NumPy、openpyxl