Lab06: Extragerea trăsăturilor şi selecţia trăsăturilor Aplicaţie pentru recunoaşterea obiectelor bazată pe formă.
Aplicație practică a extragerii şi selecţiei trăsăturilor Recunoaşterea celor 4 forme de pe cărţile de joc (indiferent de culoare) ţinând cont că ele pot să apară şi rotite, translatate sau reprezentate la scală diferită. Avem la dispoziţie un set relativ mic de exemple din fiecare tip. Este necesară identificarea celor mai simple trăsături care să fie invariante la ușoare modificări de formă/scală între două obiecte de acelaşifel, darsă fie cât mai simple şi cât mai uşordecalculat.
Descriptori de formă Utilizămdescriptoriideformă numiţi caracteristici geometrice. Pentru aceasta considerămcă: obiectul = descris ca o regiune de pixeli negri; fondul = alb nu poartă informaţie. Cei mai utilizaţidescriptori: Aria Perimetrul Excentricitatea Circularitatea (rotunjimea) Alţi descriptori utili: Haloul convex > Soliditate
Aria și perimetrul Aria A = dxdy R = R y(t) dx(t) dt dt = R x(t) dy(t) dt dt y unde: R si R regiunea și, respectiv, conturul obiectului Discret => A = numărul de pixeli din regiune Perimetrul T dx( t) dy( t) = + dt dt dt t parametrul de contur 2 2 dy y(t) y(t+1) x(t) x(t+1) dx x Discret => T = numărul de pixeli de pe contur
Excentricitatea Excentricitatea raportul R max /R min măsură a excentricității sau alungirii unui obiect razele R min si R max distanțele minime și maxime de la centrul de masă la contur R min R max Avem nevoie de valoarea centroidului (centru de masă) a formei cu aria A ( x c ; yc ) x c = 1 A x, x, y A y c = 1 A y. x, y A
Circularitatea Circularitatea (rotunjimea sau compactitatea) γ ( perimetrul) T = = 4π ( aria) 4π 2 2 A Pentru un disc, spre exemplu, γ este minim și egal cu 1. compact necompact
Soliditatea obiectului Haloul convex daca înfăşurăm un elastic pe lângă un obiect haloul convex a acelui obiect va fi toata regiunea cuprinsă de elastic. pe baza haloului convex, putem defini soliditatea obiectului: Soliditate a = AriaObiectului AriaHalouluiConvex
Examinare în cadrul lucrării Extragerea trăsăturilor formelor (cele 4 forme de pe cărţile de joc) şi încărcarea lor într un vector. calcul compactitate, excentricitate şi soliditate Reprezentarea grafică a obiectelor în diverse spaţiia trăsăturilor, și se va urmării care dintre trăsăturidiferenţiază cel maibine obiectele. câte trăsăturisuntnecesare minim şicaresuntcele maibune Este posibilă reducerea vectorului de trăsături la un spațiu 1D prin combinarea a 2 trăsături (2 D) prin definirea unei noi trăsături în funcţie de cele 2? Care ar fi avantajul?
Aplicaţie recunoaşterea celor 4 forme de pe cărţile de joc Setați calea spre directorul cu imagini și creați o mulțime care conține denumirea formelor/obiectelor (imaginile sunt salvate după forma care o conțin): path = '..\..\_tstimgsmsaii\imgtstrecob_cards\'; shapesname = {'Clubs' 'Diamonds' 'Hearts' 'Spades'}; % formele Pentru o mai ușoară afișare a grafică a rezultatului (fiecare obiect va fi reprezentat printr o culoare diferită, iar fiecare imagine a aceluiași obiect cu o formă diferită), se vor definii două mulțimi: clr = { 'k' 'b' 'r' 'm' 'c' }; % cod culoare pentru o formă frm = { '*' '+' '.' 'o' '<' '>' '^'}; % cod imagine pentru plot Se va calcula compactitatea, excentricitatea şi soliditatea unei forme utilizând funcţia (disponibilă online): [G, Exc, Sol] = GeomFeatExtr(fileNameImg, affigs) unde: filenameimg reprezintă numele imaginii; și affigs dacă este 1 se vor afișa imaginea cu obiectul, conturul obiectului și înfășurătoarea convexă a obiectului (pentru 0 nu se realizează afișarea) Se vor reprezenta grafic obiectele prin trăsăturile extrase (utilizare plot și plot3)
Pentru fiecare prototip de clasă/obiect (prima imagine din fiecare set) să se extragă trăsăturile și să se afișeze imaginea cu obiectul, conturul obiectului și înfășurătoarea convexă a obiectului (prin setare affigs = 1), după exemplul următor: [g1,exc1,sol1] = GeomFeatExtr([path 'Clubs0.jpg '], 1); Mod de generare a trăsăturilor pentru toate imaginile: for i = 1:size(shapesName,2) % considerăm fiecare formă for j = 1:5 % cate imaginii avem de la aceeasi formă filenameimg = [path shapesname{i} int2str(j-1),'.jpg']; [g(i,j), exc(i,j), sol(i,j)] = GeomFeatExtr( filenameimg, 0); end end Afişaţi grafic rezultatul pentru cele 4 forme luând in considerare cate o trăsătura din cele 3, ex: figure(1); plot(g(i,j), g(i,j), [frm{j} clr{i}]); hold on; Grupaţi două câte două din aceste trăsături, şi afişaţi grafic rezultatul pentru cele 4 forme (2 D), ex: figure(2); plot(g(i,j), exc(i,j), [frm{j} clr{i}]); hold on; Afişaţi grafic rezultatul pentru cele 4 forme, luând in considerare toate cele 3 trăsături (3 D), ex: figure(3); plot3(g(i,j), exc(i,j), sol(i,j), [frm{j} clr{i}]); hold on; 10