振戦事例 動画解析プロトコル・パイプライン
作成日:2026-04-19 / 対象:パーキンソン病 / 本態性振戦 / 小脳性振戦 / 関連:tremor-analyzer(~/work/medical-tools/tremor-analyzer/)
0. 目的
- スマホ動画から PD(4–6Hz)/ET(6–12Hz)/小脳性(3–5Hz)/生理的 の振戦を鑑別
- 外来・通所・訪問すべての場面で 同一指標で継続評価
- L-dopa ON/OFF での振戦変化を動画で定量追跡
- FOG Analyzer と同じケースカンファレンスパターンで議論資料化
1. 撮影プロトコル
1.1 機材
- カメラ:スマートフォン(iPhone / Android 30fps 以上、推奨60fps)
- 三脚:手ブレ防止必須
- 照明:150 lux以上の均一照明(影が出ないこと)
- 背景:単色・無地が望ましい(キーポイント検出精度向上)
1.2 撮影条件
| 項目 | 推奨 | 最低 |
| フレームレート | 60 fps | 30 fps(ナイキスト15Hz 確保) |
| 解像度 | 1920×1080 | 1280×720 |
| 被写体距離 | 50cm〜1m | 手が画面1/3以上 |
| 撮影角度 | 正面(患者と同じ高さ) | 俯瞰は不可 |
| 両手同時 | 必須(左右差評価) | — |
1.3 ★ 撮影環境 図解
共通環境(カメラ・照明・距離・両手同時)と 4条件の患者姿勢・カメラ位置を一目で確認できる図解。
図:振戦 4条件 撮影環境セットアップ(Claude Design)
1.4 ★ 4条件撮影(各30秒以上)
1
安静時(Rest Tremor)
・手を膝の上または肘掛けに置く/脚を組まない
・視線は前方、リラックスした姿勢
・PD 検出の最重要条件 ここで4–6Hzの pill-rolling を捉える
2
姿勢時(Postural Tremor)
・両手を前に水平伸展(肘を伸ばし、指を開いた状態)
・30秒保持
・ET 検出の最重要条件 ここで6–12Hzの対称性振戦を捉える
3
動作時(Action / Intention Tremor)
・指-鼻試験を3回(目を閉じて・ゆっくり)
・コップを持つ動作/文字を書く動作
・小脳性の検出 目標接近時の振幅増大を確認
4
Distraction(注意散らし)
・安静時姿勢のまま「100から7ずつ引き算」または「逆唱」
・30秒継続
・PD安静時振戦が増強する現象を捉える(鑑別の決め手)
1.5 撮影記録テンプレート
| 項目 | 記録値 |
| 撮影日時 | YYYY-MM-DD HH:MM |
| 撮影場所 | 外来 / 通所 / 訪問 / 在宅 |
| 薬物状態 | ON / OFF(最終内服時刻を記録) |
| 診断 | PD / ET / 小脳性 / 鑑別中 |
| 優位側 | 左 / 右 / 不明 |
| 主訴 | ふるえの時期・強さ・影響 |
| NFOG-Q | (FOG併存評価時) |
| MDS-UPDRS 3.17 | 0–4 点 |
プライバシー:顔が写る場合は自動モザイク処理(fog-analyzer/scripts/anonymize_video.py 流用)を事前に適用する。
2. 解析パイプライン(5段階)
1
動画 → 手キーポイントCSV(MediaPipe Hands)
・両手 21点 × 3軸(x, y, visibility)をフレーム別に抽出
・出力:data/keypoints/patient_XXX.csv(約4MB/60秒60fps)
・処理時間:60秒動画で約1–2分(CPU)
2
前処理
・欠損補間(最大10フレーム、ffill/bfill)
・Butterworthバンドパス(2–15Hz、4次)— 低周波ドリフト・高周波ノイズ除外
・Visibility < 0.3 のフレームをNaN→補間
3
スペクトル解析
・Welch法で全体PSD(nperseg = 2秒×fps)
・PD帯(4–6Hz)・ET帯(6–12Hz)・小脳性帯(3–5Hz)のパワー積算
・スライディングFFT(2秒窓、0.2秒ステップ)で時系列変化捕捉
4
振戦分類
・ピーク周波数の位置で候補分類を決定
・各帯域のパワー比(>20%)で信頼性確認
・左右パワー差で非対称性計算
・優位側判定(パワー比 1.3倍以上で判定、未満は「両側」)
5
レポート生成
・6パネルClaude Designダッシュボード(PNG, 130dpi)
・自己完結型HTML(base64埋め込み)
・JSON サマリー(全指標)
・ケースカンファ議論スライド(pptx + Cloudflare Pages 公開)
3. 解析指標
3.1 振戦そのものの指標(片手ごと)
| 指標 | 算出方法 | 臨床的意義 |
| Peak Frequency (Hz) | PSD の 2–15Hz 範囲での最大値 | PD/ET/小脳性 の鑑別 |
| Peak Power | ピーク周波数のパワー値 | 振戦の強さ |
| PD帯比率 (4–6Hz) | PD帯積分 / 全体積分 | PD 振戦の純度 |
| ET帯比率 (6–12Hz) | ET帯積分 / 全体積分 | ET 振戦の純度 |
| Tremor Constancy (%) | 振戦検出ウィンドウ / 全ウィンドウ | 持続性(間欠/持続) |
| Mean Amplitude | 各ウィンドウの Peak-to-Peak 中央値 | 振幅の重症度 |
3.2 両手統合指標
| 指標 | 意味 |
| Asymmetry Index = |L-R| / max(L, R) | 左右差(PD 一側優位性の確認) |
| Dominant Classification | PD / ET / Cerebellar / Physio / None |
| Dominant Hand | left / right / both |
4. 振戦分類の判定基準
| 分類 | 周波数 | 文脈 | 左右対称性 | 治療反応 |
| PD | 4–6 Hz | 安静時 | 非対称 | L-dopa ◎ |
| ET | 6–12 Hz | 姿勢・動作時 | 対称 | β遮断薬 ◎ |
| 小脳性 | 3–5 Hz | 動作時(目標接近で増大) | 両側 | 特効薬なし |
| 生理的 | 8–12 Hz | 姿勢時(低振幅) | 対称 | カフェイン断ち |
判定の優先順位(ケースカンファ判定カード):
① Peak frequency(最重要、PD/ET 直接鑑別)
② Peak power(閾値 > 1e-6 で振戦あり判定)
③ 帯域パワー比 > 20%(分類の信頼性確認)
④ Asymmetry Index(一側性=PD の補助)
⑤ Tremor Constancy(持続性)
⑥ 検出率(データ品質ゲート)
5. データ品質チェック
5.1 自動チェック項目
| 項目 | 閾値 | 低値時の対応 |
| 手検出率 | ≥ 70% | 70%未満なら解釈保留・再撮影推奨 |
| 有効フレーム数 | ≥ fps × 1.0 秒 | FFTに不足なら判定不可 |
| Visibility | ≥ 0.3 平均 | 照明・背景改善 |
5.2 撮影失敗のサイン
- 手が画面外に出る → 距離を再調整
- 複数人の手が混入 → 単独撮影
- MediaPipe が左右を取り違える → 最初の10秒で手動確認、必要なら左右反転フラグ
- 1秒未満の振戦 → ノイズ判定、より長時間撮影
6. 実行コマンド
6.1 個別実行
# 合成データテスト(動画不要)
cd ~/work/medical-tools/tremor-analyzer
py src/test_tremor_analyzer.py
# 動画 → キーポイントCSV
py src/tremor_analyzer.py --video data/videos/patient01.mp4 --output data/results/patient01
# CSV再解析(パラメータ調整用、軽い処理)
py src/tremor_analyzer.py --csv data/keypoints/patient01.csv --fps 60 --output data/results/patient01
6.2 ケースカンファ議論資料(次回実装予定)
# 症例情報 JSON を編集
cp templates/discussion/case_info_template.json data/presentation/case_YYYYMMDD.json
# 一気通貫実行(pipeline.py 振戦版は次回セッション実装予定)
py templates/discussion/pipeline.py --case data/presentation/case_YYYYMMDD.json
7. よくある問題と対処
| 症状 | 原因 | 対処 |
| 手が検出されない | 照明不足 / 手が画面外 | 150lux以上 / 近接撮影 |
| 振戦なし判定(分類 None) | 振幅が小さすぎ or 閾値過大 | peak_power_threshold 緩和(1e-6→1e-7) |
| PD のはずが ET と誤分類 | 安静時条件未達成 / 姿勢混在 | 撮影条件の分離徹底、安静時のみ切り出し |
| 左右が逆になる | MediaPipe Handedness 誤判定 | 最初のフレームで手動確認・左右反転フラグ |
| FFT ピーク不明瞭 | fps 不足(30fps以下) | 60fps 撮影推奨 |
| 1秒未満の断続振戦 | 撮影時間不足 | 最低30秒、推奨60秒以上 |
8. 参考文献
- Pintea SL et al. (2018). Hand Tremor Severity from Video. IEEE EMBC. UPDRS と相関あり。
- Williams S et al. (2020). Quantification of parkinsonian tremor from the Internet. Sensors 20(14):3946. YouTubeスマホ動画で PD 振戦定量化。
- Ali R et al. (2022). Video-based parkinsonian tremor analysis using deep learning. Front Neurol. PD/ET 鑑別。
- Wang Y et al. (2023). Remote monitoring of parkinsonian tremor using smartphone video. Sensors. ON/OFF 比較。
- Hossen A et al. (2021). Intelligent discrimination of tremor disorders from video. IEEE Access.
- Deuschl G et al. (1998). Consensus statement of the Movement Disorder Society on Tremor. Mov Disord. 古典的振戦分類。
- MDS-UPDRS Part III, item 3.15 (postural), 3.16 (kinetic), 3.17 (rest), 3.18 (constancy) — 臨床評価基準。
- MediaPipe Hands (Google, 2020) — 21点手ランドマーク検出。