Sisteme de recuoaşterea formelor Lab 1 Metoda celor mai mici pătrate 1. Obiective Acest laborator itroduce librăria OpeCV care va fi folosită petru procesarea imagiilor. Se doreşte potirivirea uei liii la o mulţime de pucte D. Se va folosi metoda celor mai mici pătrate. Se prezită atât o soluţie iterativă cât şi o formulă directă petru mai multe modele.. Fudamete teoretice Se dă o mulţime de pucte bidimesioale de forma (x i, y i ) ude i = {1,,, }. Sarcia voastră este să găsiţi ecuaţia liiei care se potriveşte cel mai bie la aceste pucte. Vom utiliza regresie liiară (metoda celor mai mici pătrate). Mulţimea de pucte este cosiderată ca mulţime de atraare şi se doreşte potrivirea uui model liiar pe date. Model 1 La orice metodă de potrivire primul pas costă î stabilirea modelului. La îceput vom folosi u model liiar care coţie u terme petru pată şi u terme liber. Exprimăm compoeta y î fucţie de x folosid fucţia: f(x) = θ 0 + θ 1 x De obicei acest model este folosit petru rezolvarea problemei. Îsă această reprezetare u poate să modeleze liii verticale. Totuşi vom pori de la acest model simplu. Se poate forma u vector care va coţie toţi parametri θ = [θ 0, θ 1 ] T (termeul liber şi coeficietul lui x). Metoda curetă adopta o fucţie de cost care sumează erorile pătrate ditre estimatorul ostru şi valorile origiale. Modelul ideal va fi obţiut câd fucţia de cost atige miimul global: J(θ) = 1 (f(x i) y i ) De ce pătratic? Putem motiva această alegere pri presupuerea că eroarea î date urmează o distribuţie gaussiaă. O observaţie importată este că această fucţie pealizează erorile doar î direcţia y şi u foloseşte distaţele puctelor la dreaptă. Petru a miimiza fucţia de cost vom calcula derivatele parţiale: J(θ) = (f(x θ i ) y i ) 0 J(θ) = (f(x θ i ) y i ) 1 Fucţia de cost atige miimul global câd derivatele parţiale sut ule. O metodă geerală petru a găsi soluţia este gradiet descet. Deorece gradietul arată direcţia î x i
care fucţia creşte cel mai mult făcâd u pas î direcţia opusă valoarea fucţiei descreşte. Dacă facem mai multe iteraţii şi cotrolăm mărimea paşilor vom atige miimul global. Deoarece fucţia de cost este pătrătică există u sigur miimim global care va fi găsit de această abordare. La îceput se aleg valori aleatoare dar diferite de 0 petru parametri. Apoi se calculează gradietul î puctul curet: J(θ) = [ J(θ), J(θ) T ] θ 0 θ 1 Şi apoi se aplică următoarea regulă pâă la covergeţă: θ ew = θ α J(θ), ude α este rata de îvăţare şi este aleasă astfel îcât fucţia de cost să descrească la fiecare iteraţie. Câd orma gradietului devie suficiet de mică algoritmul se opreşte. Această metodă este potrivită atuci câd este dificil să găsim rădăciile sistemului de ecuaţii. Petru modelul curet se poate determia foarte uşor soluţia fială. Ecuaţiile petru derivatele parţiale egale cu 0 se aduc la următoarea formă: θ 0 + θ 1 x i = y i θ 0 x i + θ 1 x i = x i y i { care este u sistem de ecuaţii liiare î două ecuoscute şi poate fi rezolvat. Se obţi valorile: θ 1 = x iy i x i y i x i ( x i ) { θ 0 = 1 ( y i θ 1 x i ) Ecuaţiile ormale - O soluţie geerală sub formă vectorială Î majoritatea cazurilor sistemul de ecuaţii se poate formula sub formă vectorială. Fie matricea A formată di liiile [1 xi] şi fie vectorul coloaa b care coţie toate valorile yi. Folosid aceste otaţii se doreşte miimizarea ormei: Aθ b = (Aθ b) T (Aθ b) Această formulă se geeralizează foarte uşor petru mai multe dimesiui. Î acest caz soluţia poate fi obţiută pri formula: θ opt = (A T A) 1 A T b Petru mai multe detalii şi demostraţie cosultaţi [1].
Model Adoptăm u alt model petru a rezolva problemele amitite î partea aterioră. Acest model este capabil să trăteze toate cazurile cu succes. Cosiderăm o parametrizare a uei liii de forma: xcos(β) + ysi(β) = ρ Aceasta descrie o liie cu ormală uitară de formă [cos(β), si(β)] care se află la o distaţă ρ de la origie. Scriem acum fucţia de cost care va fi suma distaţelor la pătrat de la fiecare puct la dreaptă: J(β, ρ) = 1 (x icos(β) + y i si(β) ρ) Observăm că aceasta reprezită eroarea adevărată pe care trebuie să miimizăm şi că fucţia de cost petru modelul 1 măsoară doar discrepaţa pe axa y. Derivatele parţiale au următoarea formă: J β = (x icos(β) + y i si(β) ρ)( x i si(β) + y i cos(β)) J ρ = (x icos(β) + y i si(β) ρ) Şi î acest caz putem să obţiem o soluţie directă, îsă este mult mai dificil să rezolvăm sistemul. Formulele petru cei doi parametri sut: β = 1 ata ( x iy i x i y i, (y i x i ) + 1 ( x i) ρ = 1 (cos(β) x i + si(β) y i ) 1 ( y i) ) Model 3 Există îcă o posibilitate care oferă o rezolvare geerală. Dacă folosim o parametrizare cu 3 parametri: ax + by + c = 0 Această parametrizare tratează corect liiile verticale fiidcă acestea se modelează cu b=0. Fucţia de cost se defieşte ca: J(a, b, c) = 1 (ax i + by i + c) care poate fi scris vectorial sub forma uei orme care trebuie miimizat: J(a, b, c) = (Aθ) T Aθ ude A este o matrice cu x3 elemete, fiecare liie coţie (x i, y i, 1) şi θ = [a, b, c] T este vectorul de parametri (u vector coloaă). Observăm ca fucţia de cost diferă faţă de cea defiită la partea cu ecuaţia ormală. Utilizarea uui model cu 3 parametri are două coseciţe relevate: se poate modela orice liie dar petru o liie avem mai multe parametrizări echivalete. Petru a rezolva problema ambiguităţii impuem restricţia ca θ să aibă ormă uitară. Soluţia la
această problemă utilizaează descompuerea cu valori sigulare (Sigular Value Decompositio SVD). Descompuem A î trei matrici: A = USV ude U şi V sut ortogoale şi S coţie valori eule doar pe diagoală (valori sigulare). Soluţia se citeşte ca şi ultima coloaa di matricea V care corespude la valoarea sigulară cea mai mică. Petru mai multe detalii cosultaţi []. 3. Cosideraţii practice θ opt = V(:, ) Citire di fişier: FILE* f = fope( fileame.txt, r ); float x,y; fscaf(f, %f%f, &x,&y); fclose(f); Crearea uei imagii color: Mat img(height, width, CV_8UC3); //8bit usiged 3 chael Accesarea pixelului de pe râdul i şi coloaa j: Vec3b pixel = img.at<vec3b>(i,j); //byte vector with 3 elemets Modificarea pixelului de la poziţia (i,j): img.at<vec3b>(i,j)[0] = 55; //blue img.at<vec3b>(i,j)[1] = 55; //gree img.at<vec3b>(i,j)[] = 55; //red Desearea uei liii care trece pri pucte: lie(img, Poit(x1, y1), Poit(x, y), Scalar(B,G,R)); Afişarea imagiii: imshow( title, img); waitkey();
4. Activitate practică 1. Citiţi datele de itrare di fişierele ataşate. Prima liie coţie umărul de pucte. Liiile următoare coţi perechi (x,y).. Afişaţi puctele pe o imagie albă de dimesiue 500x500. Petru vizibilitate mai buă se poate trasa u cerc, sau u pătrat î jurul fiecărui puct. Aveţi î vedere coveţia petru sistemul de coordoate al imagiii. Uele pucte pot avea coordoate egative. Acestea ori u se afişează ori se traslatează graficul. Metoda î sie u este afectată de faptul că puctele au coordoate egative. 3. Opţioal, utilizaţi modelul 1 cu gradiet descet. Vizualizaţi poziţia liiei la fiecare pas şi tipăriţi valorile fucţiei de cost. Trebuie să alegeţi o rată de îvăţare care asigura descreşterea fucţiei de cost. 4. Folosiţi modelul 1 şi formulele petru a calcula parametri. Vizualizaţi liia şi comparaţi rezultatul cu soluţia iterativă de la pasul aterior. 5. Opţioal, utilizaţi modelul şi gradiet descet petru a găsi parametri. Vizualizaţi poziţia liiei la fiecare pas şi tipăriţi valorile fucţiei de cost. Trebuie să alegeţi o rată de îvăţare care asigură descreşterea fucţiei de cost. 6. Folosiţi modelul şi formulele petru a calcula parametri. Vizualizaţi liia şi comparaţi rezultatul cu soluţia iterativă de la pasul aterior. 7. Opţioal, deseaţi erorile de la pucte ca şi segmete perpediculare pe liia găsită. 8. Opţioal, utilizaţi modelul 3 petru a găsi ecuaţia dreptei. 5. Referiţe [1] Staford Machie Learig - course otes 1 http://cs9.staford.edu/otes/cs9-otes1.pdf [] Tomas Svoboda - Least-squares solutio of Homogeeous Equatios - http://cmp.felk.cvut.cz/cmp/courses/xe33pvr/ws007008/lectures/supportig/costr aied_lsq.pdf