Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICENŢĂ
Sistem de recunoaștere și interpretare a gesturilor
bazat pe Microsoft Kinect
Absolvent
Pisică Andrei
Coordonator
SL dr.ing. Florin ANTON
Bucureşti, 2016
Cuprins
1.Introducere ........................................................................................................................................ 4
2. Sistemul Microsoft Kinect ............................................................................................................. 6
2.1 Modelul geometric Kinect ....................................................................................................... 9
2.2 Posibile cauze ale achiziționării datelor eronat................................................................. 11
2.3 Rezoluția imaginii de adâncime și densitatea punctelor de lumină IR ........................ 11
2.4 Identificarea punctelor luminoase ce formează articulaţii ............................................. 11
2.5 Algoritmul Mean-Shift .......................................................................................................... 13
3. Detecția și recunoașterea gesturilor........................................................................................... 16
3.1 Pregătirea datelor necesare .................................................................................................... 16
3.2 Recunoașterea statică sau a pozițiilor ................................................................................. 17
3.3 Programarea sistemului să fie invariant la rotația corpului față de Kinect ................. 21
3.4 Recunoașterea dinamică sau a gesturilor ........................................................................... 21
3.4.1 Recunoașterea dinamică folosind algoritmul Dynamic Time Warping ................ 22
3.4.1.2 Recunoașterea dinamică aplicată ............................................................................... 25
3.4.2 Recunoașterea dinamică folosind algoritmul de recunoaștere a gesturilor statice
....................................................................................................................................................... 26
4.Structura și funcțiile sistemului .................................................................................................. 28
4.1 Modurile de funcționare ........................................................................................................ 29
4.2 Stocarea datelor ....................................................................................................................... 30
4.3 Interfața modurilor de funcționare ...................................................................................... 31
4.4 Analiza similaritudinii între două poziții .......................................................................... 33
5.Integrarea sistemului în diverse aplicații .................................................................................. 36
6.Rezultate experimentale și concluzii .......................................................................................... 39
6.1 Rezultate experimentale ........................................................................................................ 39
6.2 Planuri de viitor....................................................................................................................... 43
6.3 Concluzii ................................................................................................................................... 44
Bibliografie ........................................................................................................................................... 45
3
1.Introducere
Scopul lucrării este de a oferi o alternativă bolnavilor care stau în zone rurale
sau greu accesibile și nu au în zonă un centru de recuperare. De altfel acest sistem
poate fi utilizat de toți pacienții care doresc executarea exercițiilor din comfortul casei.
4
În lucrarea [5] se prezintă o altă utilitate a Kinect-ului decât pe plan medical. Se
prezintă o metodă nouă de control a dispozitivelor inteligente, și anume utilizarea
gesturilor în obținerea comportamentului dorit fară a fi nevoie de o interacțiune fizică,
sau folosind modul convențional cu telecomandă. Pâna în prezent voice-recognition a
fost cel mai folosit mod de Human-Computer Interaction dezvoltat și implementat în
diferite sisteme, iar de curând, s-a implementat recunoașterea de gesturi sau poziții.
Așadar se pot observa avantajele acestui dispozitiv folosit pe plan medical dar
nu numai. Pentru a putea încuviința supervizarea unui dispozitiv electric în exercițiile
fizice, sistemul Kinect-Computer prezentat în această lucrare trebuie învățat să
respecte anumite condiții impuse. Așa cum se prezintă și în lucrarea [6], programul
trebuie să fie capabil să învețe anumite gesturi de la personal calificat în fizioterapie.
Având aceste comportamente învățate, sistemul trebuie să ofere sugestii privind
modul în care trebuie executat un anumit exercițiu cât și informații privind
corectitudinea în execuția acestora.
5
2. Sistemul Microsoft Kinect
Sistemul Microsoft Kinect este compus dintr-o serie de senzori, a căror date
extrase sunt prelucrate de microprocesorul intern oferind aplicației la care acesta se
conectează informații esențiale, ușor de integrat în procesarea internă a aplicației.
Senzorii de care dispune MS Kinect (Figura 2.1) sunt următorii: cameră RGB 1280 x
960 rezoluție, IR senzor, set de 4 microfoane distribuite pe rama Kinect-ului, putând
astfel localiza sursa sunetului în spațiu, accelerometru pe 3 axe folosit pentru a obține
orientarea dispozitivului. Pe lângă acești senzori, a fost adăugat și un emitor de lumină
infraroșie ce propagă puncte de lumină IR în zona de funcționare. Câmpul de
vizualizare este de 43 grade la verticală și 57 grade la orizontală, motorul intern
asigurând o inclinație de +- 27 de grade. Rata la care sunt capturate imaginile fiind de
30 de cadre pe secundă. [6]
6
Figura 2.2 - Lumina infraroșie propagată în spațiul de funcționare
Metoda Depth from stereo se folosește de principiul parallax care spune că un obiect
poate fi perceput diferit, văzut din diferite poziții ale observatorului. Calculul hartei
distanțelor se realizează în două etape. Etapa 1, harta distanțelor este obținută
analizând șablonul de lumini proiectat și comparându-l cu cel de referință.
7
pentru fiecare punct printr-o procedură de corelare. Astfel pentru fiecare pixel se poate
calcula distanța pană la senzor.
În figura 2.4 este ilustrată relația dintre distanța unui obiect (punctul de lumina
k) la senzorul CMOS, cât și distanța de distorsiune D. Pentru a putea exprima poziția
în coordonate 3D, se va considera punctul de origine (0,0,0) în centrul senzorului IR.
Axa Z este perpendiculara pe planul imaginii, axa X este perpendiculara pe Z iar axa
Y este perpendiculara pe X și Z, fiind un sistem de coordonate de mâna dreaptă. Fie
un obiect amplasat în plan la distanța 𝑍0 față de senzor, iar punctele de lumina IR
capturate de pe suprafața obiectului vor fi mișcate cu un deplasament D pe direcția
axei X. [8]
D Z0 −Zk
= (2.1)
b Z0
𝑑 𝐷
= (2.2)
𝑓 𝑍𝑘
𝑍0
𝑍𝑘 (2.3)
𝑍
1+ 0𝑑
𝑓𝑏
8
Ecuația 2.3 reprezintă modelul matematic al distanței între punctul de lumină
infraroșie și senzor, calculată din distorsiunea șablonului de lumină.
𝑍𝑘
𝑋𝑘 = − (𝑥 − 𝑥0 + 𝛿𝑥) (2.4)
𝑓 𝑘
𝑍𝑘
𝑦𝑘 = − (𝑦𝑘 − 𝑦0 + 𝛿𝑦) (2.5)
𝑓
𝑢 𝑠
[𝑣 ] = 𝐾 [ 𝑡 ] (2.5.1)
1 1
𝑠 𝑝 2 𝑘3 𝑝𝑞 + 𝑘4 (𝑟 2 + 2𝑝2 )
[ 𝑡 ] = (1 + 𝑘1 𝑟 2 + 𝑘2 𝑟 4 + 𝑘5 𝑟 6 ) [𝑞 ] + [2 𝑘4 𝑝𝑞 + 𝑘3 (𝑟 2 + 2𝑝2 )] (2.6)
1 0 1
𝑝𝑧
2 2 2
𝑟 = 𝑝 + 𝑞 , [𝑞 𝑧] = 𝑅(𝑋 − 𝐶) (2.7)
𝑧
9
Figura 2.5 - Modelul geometric Kinect
Senzorul IR returnează inversul distanței d pe axa z pentru fiecare pixel [𝑢, 𝑣]𝑇
al camerei IR astfel:
𝑢 − 𝑢0
𝑥 𝑣 − 𝑣0
[𝑦 ] = [ 1 1 𝑐 ] (2.8)
0
𝑑 −
𝑐1 𝑧 𝑐1
Unde u și v sunt obținuți din ecuația 2.6, distanța pe axa z de ecuația 2.7. X reprezintă
coordonatele 3D ale unui punct, iar 𝑐1 și 𝑐0 parametrii modelului. Asociind sistemul
de coordonate ale Kinect-ului cu cel al senzorului IR, astfel 𝑅𝐼𝑅 = 𝐼, 𝐶𝐼𝑅 = 0. Un punct
3D 𝑋𝐼𝑅 este compus din calculul [x,y,d] din imaginea de adâncime astfel:
1 𝑥 + 𝑢0
−1
𝑋𝐼𝑅 = 𝑑𝑖𝑠 −1 (𝐾𝐼𝑅 [𝑦 + 𝑣0 ] , 𝑘𝐼𝑅 ) (2.9)
𝑐1 𝑑 + 𝑐0
1
unde dis este funcția de distorsiune dată de ecuația 2.6, 𝑘𝐼𝑅 , 𝑘𝑅𝐺𝐵 sunt parametrii de
distorsiune ai camerei IR și RGB. 𝐾𝐼𝑅 este matricea de calibrare a senzorului IR.
𝐾𝑅𝐺𝐵 , 𝑅𝑅𝐺𝐵 , 𝐶𝑅𝐺𝐵 sunt matricile de calibrare, rotație și centrul camerei RGB. [9]
10
2.2 Posibile cauze ale achiziționării datelor eronat
Rezoluția imaginii de adâncime este de 640 x 480 pixeli, iar densitatea punctelor
luminoase descrește odată cu majorarea distanței dintre obiect și senzor. Dacă se
consideră densitatea punctelor ca fiind numărul de puncte luminoase per unitate de
suprafață, în timp ce numărul de puncte proiectate rămâne constant, aria este
proporțională cu distanța la pătrat dintre senzor și obiect iar densitatea punctelor pe
planul xy este invers proporțională cu distanța la pătrat de la senzor la obiect.
Rezoluția imaginii de adâncime/distanță este determinată de numărul de biți per pixeli
folosiți pentru a calcula distorsiunea. Aceasta este înmagazinată în valori întregi
reprezentate pe 11 biți, unde un bit este inversat pentru a marca punctele de lumină
neafectate de distorsiune. [8]
Având în evidență pixelii ce corespund doar corpului uman, se analizează fiecare pixel
printr-un set de algoritmi decizionali (figura 2.7) ce prezice probabilitatea de a aparține
unei anumite părți a corpului.
12
Pentru fiecare cadru numărul pașilor necesari pentru a îl procesa este N*T*L,
unde N reprezintă numărul pixelilor, T este numărul algoritmilor de decizie, L este
numărul nivelelor ce trebuiesc străbatute în procesare. N poate fi între 0 și 19.000, T
este egal cu 3 iar L egal cu 20. Pe lângă acești pași, procesarea fiecărui pixel se face
independent pentru fiecare algoritm decizional. [7]
𝑛
1 𝑥 − 𝑥𝑖
𝑓(𝑥) = 𝑑 ∑ 𝐾( ) (2.11)
𝑛ℎ ℎ
𝑖=1
13
𝑛
2𝑐𝑘,𝑑 𝑥 − 𝑥𝑖 2
𝛻𝑓(𝑥) = 𝑑+2 ∑(𝑥𝑖 − 𝑥)𝑔 (‖ ‖ )
𝑛ℎ ℎ
𝑖=1
𝑛 𝑛 𝑥 − 𝑥𝑖 2
2𝑐𝑘,𝑑 𝑥 − 𝑥𝑖 ∑ 2𝑥𝑖 𝑔(‖ ‖ )
𝑖=1 ℎ
= 𝑑+2 [∑ 𝑔 (‖ ‖ )] [ − 𝑥] (2.12)
𝑛ℎ ℎ 𝑛 𝑥 − 𝑥𝑖 2
𝑖=1 ∑𝑖=1 𝑔(‖ ‖ )
ℎ
𝑥 − 𝑥𝑖 2
∑𝑛𝑖=1 𝑥𝑖 𝑔(‖ ‖ )
ℎ
𝑚ℎ (𝑥) = − 𝑥 (2.13)
𝑥 − 𝑥𝑖 2
∑𝑛𝑖=1 𝑔(‖ ‖ )
ℎ
Microsoft Kinect SDK dispune de metode deja implementate ce ajută foarte mult în
prelucrarea datelor obținute prin USB. Funcții precum, FrameRate ce permite
modificarea pasului de eșantionare, UseSkeletalTraking folosit pentru pornirea
identificării scheletului uman. Deasemenea se poate obține streaming color din partea
camerei video RGB, folosind funcția UseColor. Pentru a vizualiza imaginea de
adâncime se poate utiliza UseDepth. Folosind UseSkeletalTracking împreună cu un
event handler, ce este responsabil cu gestionarea obiectelor de tip KinectSkeleton la
sosirea fiecărui cadru în buffer, se pot accesa în mod particular coordonatele fiecărei
încheieturi.
15
3. Detecția și recunoașterea gesturilor
16
Figura 3.1 - Segmentele luate în calcul pentru identificarea unui gest
𝑗𝑛𝑡𝑖 (𝑥𝑖 , 𝑦𝑖 , 𝑧𝑖 )
𝑗𝑛𝑡𝑗 (𝑥𝑗 , 𝑦𝑗 , 𝑧𝑗 )
17
𝑣𝑖𝑗 = (𝑥𝑗 − 𝑥𝑖 , 𝑦𝑗 − 𝑦𝑖 , 𝑧𝑗 − 𝑧𝑖 )
⃗⃗⃗⃗ (3.1)
𝑥𝑟𝑠 + 𝑥𝑙𝑠
𝑋𝑐 =
2
𝑦𝑟𝑠 + 𝑦𝑙𝑠
𝑌𝑐 = (3.2)
2
𝑧𝑟𝑠 + 𝑧𝑙𝑠
{ 𝑍𝑐 = 2
Astfel pentru fiecare vector asemănător relației 3.1, se va scădea din coordonatele
acestuia 𝑋𝑐 , 𝑌𝑐 , 𝑍𝑐 , pentru a utiliza mai departe în program coordonatele centrate. În
etapa 2 se normalizează datele calculând distanța dintre LS și RS apoi împărțind
elementele vectorilor la această distanță.
Folosind distanța calculată cu ecuația 3.3 în ecuația 3.4 se obțin vectorii de interes
centrați și normalizați.
𝑥𝑗 − 𝑥𝑖 𝑦𝑗 − 𝑦𝑖 𝑧𝑗 − 𝑧𝑖
𝑣𝑖𝑗 = (
⃗⃗⃗⃗ , , ) (3.4)
𝑆𝐷 𝑆𝐷 𝑆𝐷
Cu ajutorul acestor două unghiuri se poate identifica unic poziția unui segment
în cadrul achiziționat. În această lucrare s-au implementat două modalități de
recunoaștere a gesturilor statice, și anume metoda identificării liniare cât și metoda
identificării exponențiale.
A doua metodă precizată oferă performanțe mult mai bune decât prima, fiind puțin
mai costisitoare în privința pașilor de procesare. Metoda de identificare liniară
presupune calculul diferenței sumei de unghiuri a două poziții diferite precum:
11
𝑣 𝑣
𝜃𝑡 = ∑(|𝜃𝑌 𝑖 | + |𝜃𝑋𝑍𝑖 |) (3.5)
𝑖=1
Unde 𝑣𝑖 reprezintă segmentul cu numărul i din cei 11 de interes, obținut prin formula
3.4 iar 𝜃𝑡 reprezentând suma tuturor unghiurilor. Așadar se poate calcula diferența
19
sumelor unghiurilor a două poziții (cea de referință, învățată cu cea de testat captată
într-un anumit moment de timp)
Această metodă nu este foarte eficientă atunci cand două poziții sunt
asemanătoare. Din acest motiv se preferă utilizarea metodei de identificare
exponențială deoarece chiar și dacă un singur segment este puțin diferit între cele două
poziţii, atunci unghiurile acelui vector vor diferenția semnificativ cele două poziții. În
acest caz rezultatul funcției exponențiale a diferenței individuale a unghiurilor
aceluiaș tip de segment din cele două poziții este calculat și însumat. [12]
𝑣 𝑣 𝑣
𝜃𝑝 𝑖 = |𝜃𝑦 𝑖 | + |𝜃𝑥𝑧𝑖 | (3.8)
11
𝑣 𝑣
𝑠𝑢𝑚𝑟𝑒𝑓 = ∑ 𝑒𝑥𝑝(|𝜃𝑟𝑒𝑓
𝑖
− 𝜃𝑡𝑠𝑖 |) (3.9)
𝑖=1
20
3.3 Programarea sistemului să fie invariant la rotația corpului
față de Kinect
𝑣1𝑥
𝜃 = cos −1 ( ) (3.10)
⃗⃗⃗⃗⃗
|𝑣 1 |
După ce se obține aceast unghi, cei 11 vectori de interes trebuiesc rotiți pe axa Y pentru
a exclude rotația nedorită a persoanei. [12]
21
Pentru recunoaşterea dinamică s-au implementat două tipuri de algoritmi și anume
unul bazat pe metoda Dynamic Time Warping iar cel de al doilea a constat în folosirea
algoritmului de recunoaștere a gesturilor statice pentru a recunoaște un gest.
Scopul principal al algoritmului DTW este acela de a compara două serii timp X =
(𝑥1 , 𝑥2 , … , 𝑥𝑁 ) de lungime N ∊ N și Y = (𝑦1 , 𝑦2 , … , 𝑦𝑀 ) de lungime M ∊ N. Aceste serii
pot reprezenta semnale discrete. Pentru a stabili similaritudinea între două secvențe
se va defini un spațiu caracteristic notat cu Ƒ. Atunci X și Y ∊ Ƒ pentru n ∊ [1:N] și m
∊ [1:M]. [13] Pentru a compara aceste două secvențe, este necesară includerea unei
variabile numită variabilă locală de cost sau distanța locală măsurată ce este definită
printr-o funcție:
𝑐: Ƒ𝑥Ƒ → 𝑅 ≥ 0 (3.12)
De obicei, c(x,y) este mic (cost scăzut) dacă x și y sunt asemanătoare și invers, c(x,y)
este mare (cost ridicat) dacă acestea diferă.
22
Figura 3.4 - Matricea de cost a două secvenţe
Figura 3.4 reprezintă matricea de cost a două secvenţe X (pe axa verticală) și Y
(pe axa orizontală) calculată cu distanța Manhattan (modulul diferenței) drept costul
local c. Regiunile de cost scăzut sunt indicate de nuanţe închise iar regiunile de cost
ridicat fiind indicate în nuanţe deschise. Fiecare pereche de elemente a secvențelor X
și Y compun împreună matricea de cost C ∊ 𝑅 𝑁𝑥𝑀 definită prin C(n,m) = c(𝑥𝑛 , 𝑦𝑚 ).
După formarea acestei matrici, scopul algoritmului DTW este de a găsi o aliniere între
X și Y ce oferă costul total minim. [13]
(i) Condiția de limitare, drumul de cost începe în stânga jos a matricii din figura 3.4 și
se termină în dreapta sus; 𝑝1 = (1,1) ș𝑖 𝑝𝑙 = (𝑁, 𝑀).
(ii) Condiția de monotonie, în explorarea drumului algoritmul nu se va întoarce
niciodata cu un pas înapoi; 𝑛1 ≤ 𝑛2 ≤ 𝑛3 … ≤ 𝑛𝑙 ș𝑖 𝑚1 ≤ 𝑚2 ≤ ⋯ ≤ 𝑚𝑙
(iii) Condiția dimensionării pașilor; După p pași în aceeași directie, nu se permite
înaintarea cu încă un pas pe aceeași direcție, înainte de a se păși de q ori pe direcția
diagonală, 𝑝𝑙+1 − 𝑝𝑙 ∊ {(1,0), (0,1), (1,1)} 𝑝𝑒𝑛𝑡𝑟𝑢 𝑙 ∊ [1: 𝐿 − 1]. [13]
Se observă cum condiția (iii) implică condiția de monotonie (ii). Costul total 𝑐𝑝 (𝑋, 𝑌) a
unui drum de cost p pentru secvențele X și Y cu respect la costul local c corespunzător
unui element din matrice este definit astfel:
În final un drum de cost optim între X și Y este definit de formula 3.14, deoarece pentru
oricare 2 secvențe se obţin mai multe drumuri de cost ce au valori 𝑐𝑝 diferite. [13]
𝐷𝑇𝑊(𝑋, 𝑌) = 𝑐𝑃∗ (𝑋, 𝑌) = min{𝑐𝑝 (𝑋, 𝑌)|𝑝 𝑒𝑠𝑡𝑒 𝑢𝑛 𝑑𝑟𝑢𝑚 𝑑𝑒 𝑐𝑜𝑠𝑡 (𝑁, 𝑀)} (3.14)
23
Pentru a determina un drum optim ar trebui verificată fiecare posibilitate de
calcul între X și Y. O asemenea procedură ar duce la o complexitate de calcul
exponențială cu lungimea N și M. Pentru simplitate se va implementa un algoritm de
complexitate O(NM). Fiind definite secvențele X(1:n) = (𝑥1 , 𝑥2 … , 𝑥𝑛 ) pentru n ∊ [1:N]
iar Y(1:m) = (𝑦1 , 𝑦2 … , 𝑦𝑚 ) pentru m ∊ [1:M] se va nota:
24
Figura 3.5 - (a)Matricea de cost C și (b) matricea de cost acumulat D și drumul
optimal p*
T(t) = [𝑣1𝑥 (𝑡), 𝑣1𝑦 (𝑡), 𝑣1𝑧 (𝑡),…, 𝑣11𝑥 (𝑡), 𝑣11𝑦 (𝑡), 𝑣11𝑧 (𝑡)], t=1,2,...,T (3.17)
R(r) = [𝑣1𝑥 (𝑟), 𝑣1𝑦 (𝑟), 𝑣1𝑧 (𝑟),…, 𝑣11𝑥 (𝑟), 𝑣11𝑦 (𝑟), 𝑣11𝑧 (𝑟)], r=1,2,…,R (3.18)
3.17 poate fi considerat secvența X iar R(r) secvența Y. Punctul de start și de final fiind
(T(1) , R(1)) = (1,1) și (T(M) , R(M)) = (T,R). [13]
Algoritmul utilizat:
Date de intrare: Lista de poziții (buffer), Lista de poziții de referință ce compun gesturile
Date de ieșire: Numele gestului recunoscut
Procedură: Pentru fiecare poziție din buffer se compară asemănarea acesteia cu fiecare
poziție de referință folosind metoda de calcul prezentată în secțiunea 3.2
Se parsează lista cu poziții de referință și se caută poziția cu valoarea 3.9 cea mai mică.
Apoi se verifică dacă această vloare nu depășește valoarea de prag impusă.
Dacă depășește valoarea de prag, poziția nu aparține niciunui gest și se trece la analiza
următoarei poziții din buffer.
26
Daca nu depășește valoarea de prag, se verifică dacă poziția anterioară celei analizate a
fost recunoscută. Dacă da atunci și aceasta poate fi la rândul ei validată, altfel se va aștepta
validarea celei anterioare prin trimiterea unui nou set de poziții către buffer.
După ce se verifică fiecare poziție din buffer, se va testa pentru fiecare gest dacă are toate
pozițiile din listă recunoscute. Gestul ce raspunde adevărat la această condiție de test este cel
recunoscut.
Reinițializarea tuturor pozițiilor de referință ca fiind nerecunoscute pentru analiza
următorului set de date.
27
4.Structura și funcțiile sistemului
28
4.1 Modurile de funcționare
Următoarele 3 stări posibile, modul “Learn Gestures” în care sistemul poate învăța atât
gesturi cât și poziții. Deasemenea există mai multe posibilități pentru învățarea
acestora ce vor fi prezentate în secțiunea 4.2. Modul “Start” de funcționare este acela
de supraveghere a pacientului în execuția exercițiilor. În acest mod este implementată
și o interfață grafică ce permite selectarea tipurilor de exerciții cât și modul de
recunoaștere dorit. Ultimul mod de funcționare „User Commands” este conceput
pentru casele inteligente ce pot integra un asemenea sistem pentru modificarea stării
spațiului înconjurător.
29
Figura 4.1.2 - Automatul de stare implementat
30
4.3 Interfața modurilor de funcționare
31
cadre, sistemul va întreba utilizatorul dacă dorește salvarea temporală a acestora sau
realizarea unei noi achiziții. Răspunsul trebuie oferit verbal, “save” pentru a îl salva
temporal și “delete” pentru realizarea unei noi achiziții. După ce se realizează salvarea
temporală atunci se poate denumi gestul și în urma apăsării butonului save gesture,
acesta este salvat permanent în baza de date și poate fi imediat recunoscut.
După cum se poate observa fiecare meniu are un buton “V” ce ajută la
vizualizarea gesturilor deja existente sau a pozițiilor pentru a se evita repetarea
acestora.
32
Selectarea algoritmului de recunoaștere se face prin bifarea unei casuțe din sub-meniul
“Recognition Mode”.
33
Independență, o schimbare a valorii unei trăsături nu trebuie să afecteze
semnificativ valoarea altei trăsături din setul ales
Robustețe, fiecare trăsătura a unui obiect trebuie să fie invariantă la operații ca
translația, rotația sau scalarea
Discriminantă, fiecare trăsătură trebuie să aibă valori semnificativ diferite
pentru fiecare clasă de obiecte
Consistență, fiecare trăsătură trebuie să aibă aceeași valoare pentru obiectele ce
formează o clasă
Pentru mai mule clase de obiecte, selectarea trăsăturilor este realizată ţinând cont
de eficacitatea acestora în procesul de separare a claselor. Având în vedere că se va
folosi acest algoritm doar în situația în care utilizatorul compune un gest cu ajutorul
pozițiilor predefinite, nu se vor defini clase de obiecte, în schimb se va analiza o poziție
nouă adăugată cu fiecare deja existentă în listă.
Calculul distanțelor între două poziții (puncte, definite prin trăsăturile unui obiect)
s-a realizat folosind următoarele metrici:
Euclid:
k
d (x, μ p ) ( i ( xi pi )) 2
2
(4.4.1)
i 1
Chebychev:
𝑖 = 1/(𝑀𝑖 − 𝑚𝑖 ) (4.4.3)
Această analiză este esenţială atunci când se doreşte recunoaşterea unui gest
folosind algoritmul prezentat în secţiunea (3.4.2) deoarece exclude posibilitatea de a
identifica o poziţie nedorită înaintea uneia esenţiale în lista de poziţii analizată
reducând astfel şi efortul de procesare.
35
5.Integrarea sistemului în diverse aplicații
Unitatea din figura 5.1 trebuie să dispună de o rețea locală folosită în incinta
casei căreia se dorește automatizarea. Pe o altă unitate de procesare sau chiar pe cea
care rulează aplicația prezentată, se instalează un program server, precum cel din
figura 5.2 ce primește diferite variabile de tip “string”. Aceste variabile recepționate,
sunt interpretate de către program și în funcție de setări, generează o anumită
comandă pentru a acționa diferite elemente de execuție instalate în perimetrul casei.
Programul server este scris tot în limbajul C#, iar împreună întreg sistemul necesită
36
utilizarea unui sistem de operare Windows. Server-ul este configurat cu ip-ul localhost
(127.0.0.1).
38
6.Rezultate experimentale și concluzii
Așadar au fost selectate 4 gesturi, precum se pot observa în figurile din tabelul 6.1.
Exercițiul selectat Rata succes utilizând algoritmul Rata succes utilizând algoritmul
DTW SBS
Denumire exercițiu: Exercise1 Denumire exercițiu: Exercise1-
sbs
39
Denumire exercițiu : Exercise3 Denumire exercițiu: Exercise3-
sbs
Denumire exercițiu:
Predefined1
Denumire exercițiu:
Predefined2
Din tabelul 6.1 se poate observa o performanță foarte bună a algoritmului SBS
deși nu este la fel de performant precum DTW, acesta oferă rate de succes
satisfăcătoare. S-au adăugat în tabel, două gesturi formate cu ajutorul pozițiilor
predefinite iar acestea nu pot fi identificate cu ajutorul algoritmului DTW deoarece
sunt compuse din puține poziții, însă algoritmul SBS le-a identificat cu o rată de succes
mulțumitoare.
40
deoarece capitolul 5 folosește algoritmul de identificare dinamică 3.4.1 cu cel de
identificare statică 3.2.
41
Nume poziție predefinită: P3
Se poate observa în tabelul 6.3 cum poziția P10, în urma analizei prezentate în
secțiunea 4.4, este semnalată ca fiind similară cu P12 respectiv P13. În urma acestui
feedback, utilizatorul poate decide dacă păstrează această poziție în lista ce formează
un gest sau elimină poziția nou adăugată. Având în vedere acest sistem de analiză a
similaritudinii se pot forma gesturi, având siguranța faptului că pozițiile sunt
semnificativ diferite și pot fi identificare ușor de către algoritmul de identificare a
pozițiilor.
43
utilizatorilor, cât și mai ușor de înțeles. Adăugarea unui filmuleț de tip tutorial pentru
persoanele care deschid pentru prima dată aplicația. Se mai dorește scrierea anumitor
funcționalități pe fire de execuție separate pentru a nu se bloca în anumite situații,
precum atunci când se realizează scrierea în document sau citirea datelor. Deasemenea
implementarea unui sistem de evidență a progresului acumulat de pacient și
raportarea automată către personalul calificat cu rezultatele înregistrate este necesar
pentru o comunicare mai ușoară între pacient și fizioterapeut.
6.3 Concluzii
44
Bibliografie
12. Samiul Monir, S. R. (2012). Rotation and Scale Invariant Posture Recognition.
(pp. 3-5). Research Gate.
45
46