پارکینسون یکی از شایعترین بیماریهای عصبیه و اغلب دیر تشخیص داده میشه. یکی از اولین نشانههاش یه لرزش خاص دست در حالت استراحته، با فرکانس ۴ تا ۶ هرتز.
ParkScreen یه سوال ساده داره:
آیا میشه با دوربین لپتاپ معمولی، قبل از مراجعه به پزشک، یه هشدار اولیه داد؟
جواب: بله.
این پروژه یه ابزار غربالگری اولیهست که مستقیم از دوربین سیستم کار میکنه، بدون GPU، بدون دستگاه پزشکی خاص.
⚠️ این سیستم جایگزین پزشک نیست. اگه نتیجه نگرانکننده بود حتماً با متخصص مغز و اعصاب مشورت کن.
بیشتر ابزارهای مشابه فقط لرزش دست رو اندازه میگیرن. ParkScreen یه قدم جلوتر میره.
از یه پدیده بالینی شناختهشده استفاده میکنیم: وقتی ذهن مشغول یه کار شناختیه، لرزش پارکینسونی تشدید میشه اما لرزش استرس یا خستگی معمولاً کاهش پیدا میکنه. به این پدیده Re-emergent Tremor میگن که در معیار استاندارد بالینی MDS-UPDRS مستنده.
| کلاس | توضیح | فرکانس | |
|---|---|---|---|
| 🟢 | نرمال | لرزش فیزیولوژیک طبیعی، دامنه ناچیز | ۸–۱۲ هرتز |
| 🟡 | استرس / خستگی | لرزش تقویتشده، با زمان کاهش مییابد | ۸–۱۳ هرتز |
| 🔴 | نشانگر احتمالی پارکینسون | لرزش پایدار، زیر بار ذهنی تشدید میشود | ۴–۶ هرتز |
پیشنیاز: Python 3.10+، Ubuntu 22 — بدون GPU
git clone https://github.com/yasnaask/parkscreen.git
cd parkscreen
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtاولین اجرا مدل MediaPipe (~۹MB) رو خودکار دانلود میکنه.
source venv/bin/activate
python main.pypython main.py --camera 1 # دوربین دیگه
python main.py --train # آموزش مجدد مدل① پنجره باز میشه — SPACE بزن تا شروع بشه
② فاز ۱ (۱۰ ثانیه) — دستت رو آروم جلوی دوربین نگه دار
③ ۴ ثانیه مکث
④ فاز ۲ (۱۰ ثانیه) — دست ثابت + از ۳۰ معکوس ۳تا۳تا بشمار
⑤ نمودار نتیجه نمایش داده میشه + result.png ذخیره میشه
برای نتیجه بهتر:
- نور کافی روی دست داشته باش
- دستت حدود ۳۰–۵۰ سانتی از دوربین باشه
- دوربین رو ثابت نگه دار
- داده آموزشی شبیهسازیشدهست، نه بالینی واقعی
- Essential Tremor ممکنه با کلاس استرس اشتباه گرفته بشه
- حساس به نور ضعیف و لرزش دوربین
بر اساس معیار MDS-UPDRS — آیتم ۳.۱۷ (لرزش استراحتی) و پدیده Re-emergent Tremor.
- Helmich et al., Parkinson's tremor and voluntary movement, J Neurosci, 2009
- MDS Task Force on Rating Scales for Parkinson's Disease, 2008
Parkinson's disease is one of the most common neurological disorders worldwide — and it's often diagnosed too late. One of its earliest signs is a specific resting hand tremor at 4–6 Hz.
ParkScreen asks one question:
Can a regular laptop camera provide an early warning signal — before a clinic visit?
Answer: yes — if designed thoughtfully.
This is a desktop screening tool that runs directly from your webcam, with no GPU and no special hardware.
⚠️ This is not a replacement for a neurologist. If results look concerning, please consult a specialist.
Most similar tools just measure tremor amplitude. ParkScreen goes further.
We exploit a well-documented clinical phenomenon: when the mind is engaged in a cognitive task, Parkinsonian tremor amplifies — while stress or fatigue tremor typically decreases. This is called Re-emergent Tremor, documented in the MDS-UPDRS clinical standard.
┌──────────────────────────────────────────────────────────────┐
│ ParkScreen Test Protocol │
├─────────────────────────┬────────────────────────────────────┤
│ Phase 1 — 10 sec │ Phase 2 — 10 sec │
│ Hand still, relaxed │ Hand still + count down │
│ │ from 30 by 3s │
│ │ ( 30, 27, 24, 21, ... ) │
└─────────────────────────┴────────────────────────────────────┘
↓ ↓
Baseline tremor Amplification ratio = Phase2 / Phase1
> 1.3 → Possible Parkinson indicator
| Class | What it means | Frequency | |
|---|---|---|---|
| 🟢 | Normal | Physiological tremor, negligible amplitude | 8–12 Hz |
| 🟡 | Stress / Fatigue | Enhanced tremor, decays over time | 8–13 Hz |
| 🔴 | Possible Parkinson Indicator | Stable tremor, amplifies under cognitive load | 4–6 Hz |
Prerequisites: Python 3.10+, Ubuntu 22 — CPU only, no GPU needed
git clone https://github.com/yasnaask/parkscreen.git
cd parkscreen
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtFirst run auto-downloads the MediaPipe model (~9 MB).
source venv/bin/activate
python main.pypython main.py --camera 1 # alternate camera
python main.py --train # retrain model① Window opens — press SPACE to begin
② Phase 1 (10s) — hold your hand still in front of the camera
③ 4s pause
④ Phase 2 (10s) — hand still + count down from 30 by 3s
⑤ Result chart appears + result.png saved
Tips for best results:
- Good lighting on your hand
- Hand ~30–50 cm from camera
- Keep camera steady
parkscreen/
├── main.py # entry point — protocol & UI
├── tracker.py # MediaPipe Tasks API
├── signal_processing.py # filter · FFT · Hilbert
├── features.py # 11-feature vector
├── classifier.py # SVM · K-Fold
├── simulate_data.py # synthetic training data
├── visualizer.py # result chart
└── requirements.txt
- Trained on simulated data, not clinical datasets
- Essential Tremor (8–12 Hz) may overlap with stress class
- Sensitive to uneven lighting and camera shake
Grounded in MDS-UPDRS item 3.17 (rest tremor amplitude) and the Re-emergent Tremor phenomenon under dual-task cognitive loading.
- Helmich et al., Parkinson's tremor and voluntary movement, J Neurosci, 2009
- MDS Task Force on Rating Scales for Parkinson's Disease, 2008