Sistem ini mendeteksi dan mengklasifikasikan tremor tangan secara real-time menggunakan kamera dan visi komputer tanpa sensor fisik.
- NodeJS V^20.17.0 / Bun V^1.2.21
- NPM V^10.8.6 (Jika menggunakan NodeJS
Unduh repo ini:
git clone https://github.com/CrzxaExe/tremor-detection-camera-vision.gitAtau unduh kode menjadi folder zip secara manual dan ekstrak folder tersebut pada direktori anda.
Menggunakan NPM(NodeJS):
npm installMenggunakan Bun:
bun installUntuk menjalankan aplikasi gunakan perintah, npm:
npm run devAtau menggunakan bun
bun devAplikasi akan berjalan pada localhost:5173, buka web browser dan isi dengan url:
http://localhost:5173
Kami sudah hosting demo aplikasi ini pada vercel, untuk membuka bisa klik tombol berikut: Tremor Detection, atau bisa copas url berikut:
https://tremor-detection-camera-vision.vercel.app/
Kamera → MediaPipe Hands (21 landmark tangan) → Penyimpanan lintasan landmark
→ Ekstraksi fitur (Amplitudo, Frekuensi, Stabilitas)
→ Inferensi Fuzzy → Klasifikasi Tremor
MediaPipe Hands digunakan untuk mendeteksi 21 titik landmark tangan pada setiap frame.
Posisi landmark (x, y, z) disimpan sebagai history untuk membentuk lintasan gerakan tangan yang dianalisis secara temporal.
- Amplitudo — Menggambarkan kuat atau lemahnya getaran tangan.
- Frekuensi — Menggambarkan seberapa cepat getaran terjadi per detik.
- Stabilitas — Mengukur seberapa konstan gerakan tangan dalam interval tertentu.
Ketiga fitur ini dihitung dari lintasan landmark yang sama dan saling melengkapi.
| Parameter | Deskripsi |
|---|---|
| Window | Kecepatan frame kamera (FPS) |
| Sample Rate | Jumlah frame yang digunakan untuk analisis |
| Tolerance | Ambang batas deviasi untuk stabilitas |
| Max History | Batas maksimum frame yang disimpan |
Nilai amplitudo, frekuensi, dan stabilitas diproses menggunakan Fuzzy Logic untuk menangani ketidakpastian gerakan tangan.
- Fuzzification
- Low / Medium / High (Amplitude & Frequency)
- Stable / Unstable (Stability)
- Inferensi
- Aturan berbasis kombinasi ketiga fitur (IF–THEN)
- Defuzzification
- Weighted average menghasilkan nilai tremor (0–1)
| Parameter | Deskripsi |
|---|---|
| Value | Nilai tingkat tremor (0–1) |
| Label | Normal | Mild | Severe |
| Confidence | Tingkat keyakinan tiap kelas |
- Sensitif terhadap noise kamera dan pencahayaan
- Bergantung pada kualitas deteksi MediaPipe
- Tidak dimaksudkan untuk menggantikan diagnosis medis