真的開始做之後,還會遇到一個問題:
系統要怎麼知道使用者是真的開始做動作,而不是只是稍微動了一下?
假設使用者側躺準備做蚌殼式,膝蓋可能會因為調整姿勢、呼吸,甚至只是身體晃動,而產生一點位置變化。
如果系統只要偵測到膝蓋移動,就直接判定「動作開始」,很容易出現誤判。
所以不能只看「有沒有動」,而是要設定一個基本條件。
例如可以先記錄使用者在起始姿勢時,上側膝蓋的位置或相關角度。
只有當膝蓋離開起始位置超過一定範圍時,系統才把狀態從:
READY
切換成:
OPENING
這個概念很像設定一個「門檻值」。
小幅度的晃動可以先忽略,只有真的超過門檻,才認為使用者開始進行動作。
同樣的概念也可以用在動作結束。
當膝蓋打開到一定程度之後,系統可以判斷使用者已經到達目標區域。
接著只有當膝蓋再次回到接近起始位置時,才把這一次動作視為完整結束。
也就是:
離開起始範圍 → 開始動作
到達目標範圍 → 確認有完成打開
重新回到起始範圍 → 完成一次
這樣可以避免幾種情況:
膝蓋只動一點點就被算一次
在最高點小幅晃動時被重複計數
還沒回到起始位置就直接開始算下一次
另外,我覺得這裡還有一個很重要的地方:
「開始門檻」和「回到起始位置的門檻」不一定要完全相同。
如果兩個條件設得太接近,當數值在邊界附近晃動時,系統可能會一直在「開始」和「停止」之間切換。
所以實際設計時,也可以讓兩個範圍稍微錯開,讓狀態判斷更穩定。
從這裡開始,系統已經不只是看單一張畫面,而是開始記住:
上一個時間點使用者正在做什麼。
也就是說,要判斷一個完整動作,不只需要人體姿勢,還需要「時間上的連續變化」。