尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗上傳網球比賽或練球影片,工具會用擊球聲找出每一個回合,剪掉撿球、換邊和休息的空檔,再輸出精華影片。
所有處理都在瀏覽器內完成,影片不會上傳到任何伺服器,也不需要後端或資料庫。
標定:把影片暫停在四個球場角落都看得到的畫面,按「開始標定」,依序點選近端左、近端右、遠端右、遠端左四個角(可拖曳微調)。球場格線一律用單應矩陣(homography)直接從這四個角算出來,所以畫出來的線一定會通過你點的角;發球區與中線有沒有落在真實的線上,就是檢查角點和「標定範圍」(單打/雙打)有沒有選對的方法。相機高度與焦距另外從四個角推算,只影響球速,不影響格線。標定會存在這台瀏覽器。
追蹤:按「追蹤每一顆球」逐格解析。偵測以「前後三格都沒有、只有這一格有」的移動像素為主;黃綠色只當很小的加分,因為轉播畫面的球常因過曝或動態模糊而接近白色(實測真實轉播畫面的球,黃綠色程度幾乎是 0)。最關鍵的特徵是孤立性:球在空中四周是空的,球員的手、腳、球拍周圍則一整片都在動。孤立性的檢查半徑會依畫面寬度自動調整(約 2.7%),要能涵蓋一整個球員。候選點依「像球的程度」排序並存在記憶體裡,所以之後調整靈敏度會立刻重算,不需要重新解析影片。擊球、彈跳或漏偵測造成的斷點,再依位置與時間接成整個回合的連續路徑。 預覽下方的「顯示偵測點」可以看到每一格找到了什麼:綠圈是通過門檻的候選點,白圈是被篩掉的。抓不到球時先看這個。
球速與過濾:每條軌跡會依 3D 重力拋物線切成一段段飛行——殘差一變大就切斷,拋物線穿到地面以下也切斷(所以會自動切在彈跳點)。只有真的符合重力、速度不確定度夠小、全程高度與落點合理的飛行段才會留下來並顯示速度。球員的身體、腳步與球拍不符合拋物線,會在這一步被剔除;可以取消勾選「只顯示符合拋物線的軌跡」來看原始軌跡。
標定時游標旁會出現放大鏡,角點差 0.2 公尺在遠端就會差很多,建議用放大鏡對準。
球速的已知限制:真實比賽的上旋球不服從純重力拋物線(上旋會產生額外的向下加速度),而單一機位要靠重力才能定出深度的尺度。實測一段真實轉播畫面,任何深度假設下的影像殘差都有 10 像素以上,所以這種片段不會給球速——拋物線過濾若把所有軌跡都濾掉,會自動退回顯示原始軌跡並說明。合成影片(無上旋)則可以估到 1~3% 的誤差。
準確度提醒:球場格線在角點正確時誤差為 0 像素;角點有 1.5 像素誤差時,球場內部的線最多會偏 2~15 像素(視拍攝角度)。合成資料測試中快球誤差約 2–10%,慢速吊球無法可靠估算。尚未用大量真實影片驗證;空氣阻力、動態模糊、鏡頭畸變與點角誤差都會影響結果,數字請當參考值。
node test/geometry.test.js
node test/tracker.test.js
純靜態網站(index.html 加上 lib/ 內的幾何與追蹤模組),沒有建置步驟。本機預覽:
python3 -m http.server 8000
部署在 Vercel 時,Framework Preset 選 Other,不需要設定任何指令。