PI laborator

3
Lucrarea de laborator nr. 6 Detecţia dreptelor folosind transformarea Hough 1. Obiectivele lucrării Această lucrare de laborator are ca scop însuşirea de către studenţi a conoştinţelor legate de semnificaţia şi aplicarea transformatei Hough. De asemenea, studenţii vor trebui să înveţe să folosească MATLAB pentru a aplica transformarea Hough unor imagini prezentate în format standard şi să interpreteze rezultatele obţinute. 2. Desfăşurarea lucrării Vor fi luate în discuţie mai multe probleme legate de elaborarea în MATLAB a unor programe legate de trabsformarea Hough. Printre altele, este vorba despre: – cum se pot discretiza parametrii r şi θ , – cum se obţine parametrul Calculate pentru fiecare pixel ) , ( y x valorile lui θ θ sin cos + = y x r pentru valorile selectate ale lui θ , – cum se formează un tablou acumulator ale cărui dimensiuni sunt egale cu numărul unghiurilor θ şi valorilor r în discretizarea aleasă, – cum se parcurg valorile lui r şi cum se actualizează tabloul acumulator. Resurse Pentru a parcurge această lucrare de laborator va trebui să transferaţi imagini de test şi fişiere MATLAB de la locaţia destinată disciplinei Prelucrarea imaginilor, la Departamentul Automatică, Calculatoare şi Electronică, Universitatea Petrol-Gaze din Ploieşti. Această locaţie va fi indicată studenţilor de cadrul didactic responsabil cu desfăşurarea lucrărilor de laborator. Imaginile de test sunt: imaginea unui circuit electronic imaginea unui pătrat Desigur, studenţii sunt încurajaţi să testeze programele MATLAB şi pe alte imagini. 2.1 Ce este Transformarea Hough? Se consideră ca bază de plecare paragrful dedicat transformării Hough din cursul Prelucrarea imaginilor. Acesta este accesibil din sala de laborator, prin Internet.

description

matlab

Transcript of PI laborator

Page 1: PI laborator

Lucrarea de laborator nr. 6

Detecţia dreptelor folosind transformarea Hough

1. Obiectivele lucrării

Această lucrare de laborator are ca scop însuşirea de către studenţi a conoştinţelor legate de semnificaţia şi aplicarea transformatei Hough. De asemenea, studenţii vor trebui să înveţe să folosească MATLAB pentru a aplica transformarea Hough unor imagini prezentate în format standard şi să interpreteze rezultatele obţinute.

2. Desfăşurarea lucrării

Vor fi luate în discuţie mai multe probleme legate de elaborarea în MATLAB a unor programe legate de trabsformarea Hough. Printre altele, este vorba despre:

– cum se pot discretiza parametrii r şi θ , – cum se obţine parametrul Calculate pentru fiecare pixel ),( yx valorile lui

θθ sincos ⋅+⋅= yxr pentru valorile selectate ale lui θ , – cum se formează un tablou acumulator ale cărui dimensiuni sunt egale cu numărul

unghiurilor θ şi valorilor r în discretizarea aleasă, – cum se parcurg valorile lui r şi cum se actualizează tabloul acumulator.

Resurse Pentru a parcurge această lucrare de laborator va trebui să transferaţi imagini de test

şi fişiere MATLAB de la locaţia destinată disciplinei Prelucrarea imaginilor, la Departamentul Automatică, Calculatoare şi Electronică, Universitatea Petrol-Gaze din Ploieşti. Această locaţie va fi indicată studenţilor de cadrul didactic responsabil cu desfăşurarea lucrărilor de laborator.

Imaginile de test sunt: • imaginea unui circuit electronic • imaginea unui pătrat

Desigur, studenţii sunt încurajaţi să testeze programele MATLAB şi pe alte imagini.

2.1 Ce este Transformarea Hough? Se consideră ca bază de plecare paragrful dedicat transformării Hough din cursul

Prelucrarea imaginilor. Acesta este accesibil din sala de laborator, prin Internet.

Page 2: PI laborator

2.2 Implementarea algoritmului

Discretizarea parametrilor r şi θ

Se poate observa că, deşi o pereche particulară ),( θr corespunde unei singure drepte, o dreaptă dată poate fi parametrizată în diferite moduri. De exemplu, dreapta

3−=+ yx poate fi parametrizată sub forma: 4/5πθ = şi 2/3=r . Sau, se poate folosi: 4/πθ = , 2/3−=r . Aşadar, este o problemă de a alege intervalul în care parametrul θ se restricţionează: se poate alege 2/2/ πθπ ≤≤− iar r să aibă atât valori pozitive cât şi negative sau, se poate lăsa θ să ia orice valoare în intervalul

πθ 20 ≤≤ iar r să fie restricţionat la valori ne-negative. Se poate alege orice mulţime de valori discrete dar, vom considera toate valorile

întregi (grade) din intervalul dat şi le vom converti în radiani. >>angles=[-90:180]*pi/180;

Calculul valorilor lui r

Dacă imaginea considerată este binară, se poate calcula poziţia tuturor pixelilor prin

aplicarea funcţiei find: >>[x,y]=find(im);

Dacă imaginea nu este binară, se poate forma o imagine care conţine muchii binare,

folosind tehnicile prezentate la curs. După obţinerea imaginii binare, valorile parametrului r pot fi obţinute prin:

>>z=floor(x*cos(angles)+y*sin(angles));

unde floor se foloseşte pentru a obţine valori întregi.

Formarea tabloului acumulator

Dacă o imagine are nm× pixeli iar originea este în colţul stânga sus, atunci valoarea maximă a lui r va fi 22 nm + . Mărimea tabloului acumulator se poate seta la 270*22 nm + . Totuşi, suntem interesaţi numai de valorile pozitive ale lui r , pentru o gamă dată a lui θ . Se determină cea mai mare valoare pozitivă a lui r şi se foloseşte aceasta ca dimensiune a acumulatorului. >>rmax=max(r(find(r>0))); >>acc=seros(rmax+1,270);

Page 3: PI laborator

Actualizarea tabloului acumulator

În continuare, trecem la tabloul valorilor lui r şi, pentru fiecare pereche ),( θr se incrementează valoarea corespunzătoare a acumulatorlui: >>if (r(i,j)>0, acc(r(i,j)+1,i)=acc(r(i,j)+1,i)+1;

Observaţie. Aceasta nu este o metodă foarte eficientă de formare a tabloului

acumulator.

Exerciţii şi întrebări

1. Folosiţi metodele descrise mai sus pentru a dezvolta un algoritm de calcul al trasformării Hough. Aplicaţi transformarea imaginilor patrat.tif şi circuit.tif. Comentaţi rezultatele obţinute.

În fiecare imagine trebuie să fie găsită o singură linie. Linia trebuie să corespundă valorii maxime din acumulator. Imaginea este pătrată, numărul de linii este egal cu numărul de coloane. Dimensiunea acumulatorului trebuie să fie aceeaşi cu a imaginii.

Sugestii pentru implementare Nu este productiv să încercaţi obţinerea unei funcţionalităţi complete într-un singur

pas. Mai bine ar fi să construiţi parţi componente pe care să le testaţi cu date simple.

Pasul 1. Se poate folosi funcţia Matlab find. Încercaţi help find. Aveţi grijă: în Matlab,

primul indice reprezintă linia unei matrici (coordonata y), al doilea indice corespunde numărului coloanei (coordonata x).

Pasul 2. Folosiţi parametrizarea în formă normală a unei drepte.