Procesarea Imaginilor in Sisteme Embedded

97
PROCESAREA IMAGINILOR ÎN SISTEME EMBEDDED 1

description

Procesarea Imaginilor in Sisteme Embedded

Transcript of Procesarea Imaginilor in Sisteme Embedded

Procesarea Imaginilor in Sisteme Embedded

PROCESAREA IMAGINILOR N SISTEME EMBEDDED

REZUMAT

Acest proiect prezint iniial aspectele teoretice privitoare la cteva prelucrri de imagini n sisteme embedded, destinate fie mbuntirii calitii imaginii respective (filtrri, operatori de accentuare a muchiilor), fie extragerii de informaii n scopul recunoaterii formelor (etichetarea, determinarea conturului, calculul diferitor parametri ai obiectelor din imagine). Aici am descris att avantajele, ct i dezavantajele lor, precum i cteva exemple sugestive de utilizare a acestora.

Se descriu apoi algoritmii aplicai n implementarea unora dintre prelucrrile prezentate n partea teoretic, pentru ca, n final, acestea s se utilizeze n realizarea unui sistem capabil s recunoasc figurile geometrice din imagini captate n timp real i s urmreasc un obiect cu caracteristici cunoscute.

La baza realizrilor practice a stat platforma EZ-KIT LITE ADSP-BF533 de la Analog Devices mpreun cu mediul de dezvoltare Visual DSP++.

Cuprins

CAPITOLUL 1 - INTRODUCERE3CAPITOLUL 2 - ASPECTE TEORETICE4

2.1. Prelucrri de imagini4

2.1.1. Operaii morfologice - Erodarea i Dilatarea42.1.2. Filtrri6

2.1.2.1. Filtrarea spaial72.1.2.1.1. Filtre liniare72.1.2.1.1.1. Filtrarea trece jos Filtrul Gaussian82.1.2.1.1.2. Filtrarea trece sus Operatorul Sobel102.1.2.1.2. Filtre neliniare Filtrul median122.1.2.2. Filtrarea temporal132.1.3. Segmentarea142.1.4. Etichetarea172.2. Procesoare192.2.1. Procesorul ADSP-BF533202.2.2. PPI Parallel Peripheral Interface212.2.3. UART - Universal Asynchronous Receiver Transmitter242.2.4. DMA Direct Memory Access282.2.5. Date de tip Fract342.2.6. Standardul ITU-R656352.2.7. JTAG Joint Test Action Group372.3. Platforma de dezvoltare ADSP-BF533 EZ-KIT LITE37CAPITOLUL 3 CONTRIBUII, REZULTATE I CONCLUZII403.1. Operaii morfologice - Erodarea i dilatarea403.2. Filtrarea trece jos cu filtru Gaussian413.3. Accentuarea muchiilor utiliznd operatorul Sobel453.4. Filtrarea temporal473.5. Segmentarea483.6. Etichetarea503.7. Detecia contururilor523.8. Aplicaie de recunoatere i urmrire533.8.1. Achizitie imagine533.8.2. Prelucrari563.8.3. Comanda servomotoarelor..593.9. Optimizri..613.10. Concluzii..63CAPITOLUL 4 CALCUL ECONOMIC64CAPITOLUL 1 - INTRODUCERE

Proiectul de fa i propune s investigheze posibilitatea de implementare a unor operaii de prelucrare a imaginilor pe sisteme embedded, pentru ca apoi o parte dintre acestea s se utilizeze n realizarea unei aplicaii de recunoatere i urmrire a unui obiect cu anumite caracteristici dintr-o imagine captat n timp real.

Sistemul descris se bazeaz pe algoritmi tradiionali de detecie de contur, segmentare i etichetare, iar pentru testarea lui s-a utilizat platforma de dezvoltare EZ-KIT LITE ADSP-BF533 de la Analog Devices.

Dup optimizri s-au obinut timpi de procesare de aproximativ 0.2 secunde pentru o imagine, ceea ce nseamn c se prelucreaz 5 cadre pe secund.Lucrarea s-a structurat in 4 capitole, dupa cum urmeaza:Capitolul 2 include aspectele teoretice care au stat la baza realizrii practice. Se prezint att informaii generale, ct i rezultate obinute n Matlab referitoare la operaii morfologice pe imagini, metode de filtrare, segmentare i etichetare. Tot aici se prezint procesorul i placa de dezvoltare - insistnd doar pe acele informaii i caracteristici care au fost necesare n implementarea cerinelor.n capitolul 3 se detaliaz algoritmii utilizai pentru implementarea diferitor prelucrri de imagini, precum i o serie de optimizri de cod ce au dus la micorarea timpului de procesare. Rezultatele obinute, ct i concluziile proiectului se gsesc tot n cadrul acestui capitol.Capitolul 4 cuprinde un calcul economic al proiectului, incluznd att costul orelor de munca alocate pentru documentare i implementare, ct i a softului i prilor fizice utilizate n dezvoltarea lui.n anexe se gsete codul implementat in VisualDSP++ si explicat detaliat pentru prelucrrile realizate.

CAPITOLUL 2 - ASPECTE TEORETICE2.1. Prelucrri de imagini

Procesarea imaginilor este un domeniu al inteligenei artificiale ce se ocup cu modul de reprezentare, reconstituire, clasificare, recunoatere i analiz a imaginilor cu ajutorul calculatorului.

Principalele motive pentru care se apeleaz la procesarea imaginilor sunt:

mbuntirea calitii imaginii pentru a se scoate n eviden anumite detalii din cadrul ei. n acest scop se apeleaz la reducerea zgomotului, evidenierea unor zone de interes prin modificarea scrii de gri (sau de culoare), a contrastului, accentuarea muchiilor, etc.

Extragerea de informaii dintr-o imagine n vederea identificrii i/sau clasificrii coninutului imaginii respective. Se prelucreaz imaginea pentru a se produce diveri parametri numerici (diferite distane i relaii dintre obiectele prezente n imagine, momente statistice, parametri geometrici, coeficieni Fourier,etc), iar pe baza valorilor obinute i a unei scheme de decizie se clasific datele de intrare.

Exemple clasice de aplicaii pentru procesarea imaginilor (i recunoaterea formelor) includ: recunoaterea caracterelor, recunoaterea amprentelor, prelucrarea imaginilor medicale, a imaginilor satelit, etc.2.1.1. Operaii morfologice - Erodarea i Dilatarea

Ideea de baz a oricrei prelucrri morfologice const n considerarea imaginii ca un ansamblu (mulime, reuniune de pri) asupra cruia se aplic transformri a cror esen este comparaia cu mulimi (ansambluri mai simple), numite elemente structurante. Aceste transformri conduc la simplificarea structurii imaginii, pstrnd doar caracteristicile eseniale de form.

Cei mai folosii operatori morfologici sunt erodarea i dilatarea.

Mulimea pixelilor obiect A dintr-o imagine obinut prin erodare (contractare, comprimare) cu elementul structurant B se definete ca mulimea pixelilor cu care se poate translata elementul structurant astfel nct B s fie inclus n A.

Fiecare pixel al obiectului care atinge fundalul este transformat n pixel fundal.

Dup erodare

dispar obiectele izolate;

aria scade; fisurile se lrgesc; gurile se mresc; un obiect se poate diviza n mai multe obiecte mai mici; 2 obiecte unite accidental se despart. Mulimea pixelilor obiect A dintr-o imagine obinut prin dilatare (expandare) cu elementul structurant B se definete ca mulimea pixelilor cu care se poate translata elementul structurant astfel nct B s aib puncte comune cu A.

Astfel, fiecare pixel din fundal aflat n contact cu obiectul este transformat n pixel obiect.

Dup dilatare:

obiectul va fi mai neted; aria crete; se pot uni mai multe obiecte;Astfel de transformri se vor realiza pe imagini binarizate, n care 1 este asociat cu alb, iar 0 cu negru.

Se poate ntmpla ca n urma binarizarii, din cauza alegerii inadecvate a pragului sau din cauza zgomotului, s apar mici insule. Pentru eliminarea lor fr a se modifica dimensiunea obiectelor de interes, se aplic un numr de dilatri urmat de un numr egal de eroziuni sau invers, folosind acelasi sablon.

O operaie de erodare urmat de o dilatare se numete deschidere se elimin micile insule din pixelii obiectului.

Printr-o dilatare urmat de o erodare se obine nchiderea unei imagini se elimin insulele din cadrul fundalului.

Operatorii deschidere i nchidere se aplic i pentru separarea obiectelor atinse, respectiv concatenarea celor fragmentate.

2.1.2. FiltrriO categorie de prelucrri de imagini des ntlnite sunt reunite sub numele de filtrare. Obiectivele filtrrilor sunt diferite, n funcie de coninutul informational vizat i de etapa n care se execut.2.1.2.1. Filtrarea spaialFiltrarea spaial a imaginilor este o operaie care se aplic local la nivelul fiecrui pixel din imagine. Noua valoare a pixelului din imaginea prelucrat rezult prin combinarea luminanelor unui numr oarecare de pixeli din imaginea iniial, situai n vecintatea pixelului curent prelucrat.

Numrul de vecini luai n considerare va determina dimensiunea filtrului. Cu ct dimensiunea filtrului va fi mai mare, cu att efectul filtrrii va crete.

Filtrele spaiale pot fi folosite pentru eliminarea anumitor tipuri de zgomot din imagini i se pot clasifica, dup structura i modul de aplicare, n:

filtre liniare se aplic printr-o operaie liniar asupra imaginii (de obicei, convoluie). Sunt folosite pentru nlturarea zgomotului Gaussian i a celui uniform.

filtre neliniare se aplic n cazul n care imaginile sunt afectate de zgomot de tip sare i piper.2.1.2.1.1. Filtre liniareOperaia liniar ce se aplic asupra imaginii de prelucrat este descris de relaia:

unde

in(m,n) este imaginea de filtrat;out(m,n) este imaginea obinut n urma filtrrii;V este vecintatea punctului curent, n care se face calculul. Este numit masc sau fereastr de filtrare;wmn este scalarul de pe poziia (m,n) a ferestrei de filtrare i poart numele de coeficient al filtrului.

Practic, algoritmul de realizare a filtrrii este descris de urmtorii pai:

plaseaz vecintatea V cu originea n pixelul curent; extrage valorile pixelilor din vecintate; combin valorile extrase; scrie nou valoare n imaginea de ieire la poziia (r,c); treci la pixelul urmtor; 2.1.2.1.1.1. Filtrarea trece jos Filtrul Gaussian

Filtrarea trece jos face parte din categoria filtrrilor liniare i se realizeaz prin convoluia dintre matricea imaginii de filtrat i o fereastr de filtrare (masc).

Un aspect important al alegerii ponderilor mtii este pstrarea luminanei medii originale dup filtrare. n acest scop,suma ponderilor din fereastr de filtrare trebuie s fie 1.

Sunt date n continuare cteva exemple de mti ce pot fi folosite pentru filtrare trece jos.

n urma acestei operaii, nivelul de gri al fiecrui pixel se nlocuiete cu media nivelurilor de gri pentru cei n-vecini (4 sau 8), din acest motiv astfel de filtre numindu-se i filtre de mediere aritmetic.

Ferestrele pot fi de diferite dimensiuni, ns la dimensiuni mari (utilizarea succesiv a unei ferestre mici) apare fenomenul de nceoare a imaginii (blur).

Un efect al filtrrii trece jos este atenuarea frecvenelor nalte, presupuse a proveni din zgomot. Astfel se dorete o frecven de tiere mic. Alt efect al filtrului este teirea sau netezirea muchiilor din imagine (acele zone n care exist tranziii de la luminan mare la mic sau invers). Cu ct frecvena de tiere a filtrului este mai mic,cu att muchia va fi mai atenuat.

Astfel, alegerea frecvenei de tiere a filtrului este un compromis ntre tendina de atenuare a zgomotului de frecven mare i prudena n privina netezirii muchiilor.

Filtrul Gaussian

Unul dintre filtrele trece jos este filtrul Gaussian. Acesta, dup cum i spune i numele, este dedicat eliminrii zgomotului Gaussian. Din punct de vedere matematic, filtrul Gaussian modific imaginea de intrare prin convoluia cu o funcie Gauss.

Funcia Gaussian unidimensional este dat de relaia:

Bidimensional, aceasta se exprim prin produsul a dou funcii 1D, una pentru fiecare direcie.

= abaterea (deviaia) standard.

Dimensiunea nucleului de convoluie trebuie corelat cu valoarea deviaiei standard, n timp ce valoarea lui se alege n funcie de nivelul zgomotului din imagine. Cu ct zgomotul este mai puternic, cu att i dimensiunile nucleului Gaussian vor crete.

n general, dimensiunea nucleului se ia 6.

Un exemplu de masc folosit pentru filtrare gaussiana este w4.

2.1.2.1.1.2. Filtrarea trece sus Operatorul Sobel

Prin opoziie cu filtrarea trece jos, filtrarea trece sus se folosete n situaia cnd imaginea este prea uniform, muchiile nu sunt vizibile (ca la o imagine n cea).

Dintre matricile nucleu utilizate n acest scop, amintim:

Componentele din partea de sus a spectrului semnalului util sunt accentuate avnd ca obiectiv creterea contrastului i accentuarea detaliilor.

Operatorul Sobel

Este de asemenea un filtru trece sus care scoate n eviden contururile obiectelor de pe o anumit a direcie n funcie de nucleul de convoluie aplicat. Se spune c se realizeaz derivarea pe direcia indicat.

Exist 8 nuclee corespunztoare celor 8 direcii:

Nucleele ki , i=28, se obin prin rotaii successive ale lui k1.

Se observ c, pentru o comportare derivativ, suma ponderilor vecinilor este nul.

Pentru aflarea variaiei maxime de intensitate este necesar determinarea vectorului gradient. Acest lucru este posibil prin dou metode :

Gradientul este estimat n cele 8 direcii posibile, iar valoarea amplitudinii reprezint maximul rezultatelor obinute prin aplicarea celor 8 nuclee.

Se utilizeaz doar dou din cele opt nuclee (de exemplu k1 i k3) pentru obinerea diferenelor finite pe linii (gy), respectiv coloane (gx). n acest caz, amplitudinea i direcia gradientului se calculeaz cu relaiile:

n care gx = A*k3, iar gy = A*k1.

A este imaginea surs, iar * este operatorul de convoluie bidimensional.Ca dezavantaj al acestui operator se poate meniona sensibilitatea la zgomot (se tie c derivata amplific zgomotul). Acest lucru este evideniat n figur 1. n acest caz derivata trebuie combinat cu o filtrare de netezire care s o precead. Netezirea trebuie s fie orientat pe direcie perpendicular direciei de derivare.

a) imaginea iniial

b) aplicarea operatorului Sobel imaginii a)

Fig.1. ( [1] )

Contururile detectate cu ajutorul operatorilor de tip gradient necesit operaii de postprocesare pentru subiere i nchidere.

2.1.2.1.2. Filtre neliniare Filtrul median

Dac o imagine afectat de zgomot de tip sare i piper ar fi filtrat liniar, rezultatul ar fi o accentuare a punctelor de zgomot i o corupere a pixelilor cu valori corecte din jurul acestora, aa cum se art n figur 2b.

a) imaginea iniial b) aplicarea unui filtru liniar c) aplicarea filtrului median

Fig.2. ( [2] )

O clas esenial a filtrelor neliniare este format din filtrele bazate pe ordonare.

Filtrul median

nlocuiete valoarea pixelului central cu medianul irului ordonat obinut din valorile pixelilor selectai de fereastra de filtrare.

Un exemplu de calcul pentru un filtru median cu fereastr ptrat de 3x3 este:

Efectul aplicrii filtrului median este c pixelii cu valoarea foarte diferit de a vecinilor dispar, ceea ce duce la rejecia zgomotului salt and peeper i la eliminarea liniilor subiri (figura 2c).

Un dezavantaj al acestui tip de filtrare l constituie numrul destul de mare de operaii necesare pentru ordonarea pixelilor din vecintate.

2.1.2.2. Filtrarea temporal

n numeroase situaii informaia vizual este captat n mod continuu, n intenia de a detecta schimbrile care se petrec. Un exemplu clasic provine din aplicaiile de supraveghere.

Exist diferii algoritmi pentru analiza micrii i urmrirea contururilor. Poate cei mai simpli i mai rspndii sunt cei bazai pe filtrarea temporal, o metod de a determina deplasarea fiecrui pixel ntre imagini succesive.

Pentru a determina micarea obiectelor prin analiza imaginilor succesive, comparm valoarea unui punct din imaginea original cu cea din imaginea final. Imaginea rezultata in urma filtrarii se obtine prin convolutia a 2d+1 cadre consecutive cu o masca simetrica de dimensiune 1x(2d+1) (d Z). Se prelucreaza cadrul d+1. In figura 3 se prezinta algoritmul de filtrare utilizat in cazul convolutiei cu o masca de dimensiune 1x5.

Fig.3. Algoritm utilizat pentru filtrarea temporala

2.1.3. Segmentarea

n analiza obiectelor dintr-o imagine este esenial s putem separa obiectele de interes de restul imaginii. Acest ultim grup poate fi referit i ca fundal.Tehnica de prelucrare a imaginilor utilizat ,de obicei, pentru gsirea elementelor de interes, n vederea analizei i clasificrii lor ulterioare, este segmentarea.

n termeni matematici, se poate spune c segmentarea unei imagini R se definete ca fragmentarea (complet) a lui R n mai multe regiuni nevide i conexe Ri, avnd urmtoarele proprieti:

Exist trei criterii dup care se poate face segmentarea: luminana, culoarea i textur. n primul caz, se presupune c obiectele de interes au valorile luminanelor cuprinse ntr-un anumit interval, iar restul obiectelor i fondul nu posed poriuni cu luminane n intervalul respectiv. n cazul segmentrii dup culoare se are n vedere faptul c obiectele ce trebuie separate au o proprietate distinct a compoziiei de culoare, iar n ceea ce privete segmentarea dup textur se presupune existena unei proprieti distincte a periodicitii atributelor pixelilor obiectelor de separat.

ntruct segmentarea dup luminan este cea mai intuitiv (n cazul imaginilor monocrome se numete segmentare dup nivelul de gri), aceasta se va prezenta n continuare.

Histograma unei imagini este un grafic n care se reprezint numrul de apariii corespunztor diferitelor niveluri de gri posibile. Aceasta nu ofer nici o informaie referitoare la locaia pixelilor, ns cu ajutorul ei se pot maipula nivelurile de gri n vederea mbuntirii contrastului, luminozitii, etc.

Pentru o imagine n format RGB se poate afia cte un grafic pentru fiecare canal de culoare. n cazul unei imagini monocrome (pe 8 bii) histograma va arta ci pixeli corespund fiecrei culori posibile (256 valori).

Cel mai simplu caz de tratat este cel n care luminanele obiectelor sunt grupate ntr-un anumit interval, iar luminana fondului ocup restul scrii de gri. Histograma reprezentativ acestui tip de imagini se numete histogram bimodala (are dou maxime locale,unul pentru fundal i unul pentru obiecte) i este prezentat n figur urmtoare.

Fig.4. Histogram bimodala

Dac primul maxim din figura corespunde fondului, atunci avem obiecte luminoase pe fond ntunecat.

Pentru separarea celor dou intervale de niveluri de gri i deci identificarea obiectelor de interes din imagine, se va alege un nivel de gri Th, ntre luminanele fondului i obiectelor, numit prag de segmentare (threshold).

Acest prag se poate alege avnd valoarea minim a frecvenei de apariie, deci pe minimul local situat ntre cele dou maxime ale histogramei. nainte de determinarea acestui minim,valorile histogramei trebuie filtrate pentru a nu avea de ales ntre mai multe minime locale. Segmentarea se va face prin compararea fiecrui pixel din imagine cu pragul Th.

Un alt criteriu de alegere a pragului, considernd o distribuie normal pentru pixelii fondului i cei ai obiectului, este la 2,5 fa de nivelul de gri pentru care se atinge valoarea maxim n histogram(media), aa cum se art n figur 5.

Fig.5. Determinarea pragului de segmentare ( [3])

=deviaia standard, m=media

Dup stabilirea pragului de segmentare, se compar fiecare pixel din imagine cu pragul Th.

Astfel

n care E0 i E1 pot fi 0 i respectiv 1, sau 0 i 255.

n urma acestei transformri, din imaginea iniial R se va construi o imagine binar.

2.1.4. Etichetarea

Un algoritm de etichetare are ca scop asignarea unei etichete unice fiecrui obiect distinct dintr-o imagine binar i obinerea unei imagini ce conine valori ntregi (0 pentru fundal, 1 pentru primul obiect, 2 pentru obiectul urmtor, s.a.m.d). Toi pixelii unui obiect vor avea aceeai etichet.

Exist dou modaliti de realizare a etichetrii unei imagini binare:

Prin recursivitate.

Se alege un punct im[i][j]=0 i se asigneaz o etichet att lui ct i pixelilor vecini de tip obiect. Mai departe se vor eticheta vecinii vecinilor.

Cnd procedura recursiv se termin, se va obine o component conex etichetat complet i putem continua alegnd alt punct de start (neetichetat nc). Pentru a gsi un nou punct de start, se va parcurge imaginea n mod sistematic, ncepnd o procedur de etichetare de fiecare dat cnd se gsete un punct im[i][j]=0.

Prin compararea cu pixelii vecini.

Acest algoritm este descris de 3 pai:

Pasul 1. Etichetarea pixelilor din imaginea surs.

Pasul 2. Stabilirea claselor de etichete echivalente

Pasul 3. nlocuirea etichetei fiecrui pixel cu eticheta ataat clasei de echivalen din care face parte.

Pasul 1. Pentru etichetarea pixelilor din imaginea surs este necesar, mai nti, definirea tipului de conectivitate care se va folosi. Imaginea binar de la intrare este parcurs pixel cu pixel i de fiecare dat cnd se gsete un pixel obiect se verific etichetele vecinilor acestuia (pixeli din conectivitate). Dac niciunul din pixelii vecini nu face parte dintr-un obiect, pixelului evaluat i se asigneaz o nou etichet. n caz contrar, acestuia i se va atribui aceeai etichet ca a unuia dintre vecini.Pasul 2. Este necesar ntruct se poate ntmpla ca dou mulimi disjuncte de pixeli din acelai obiect s aib atribuite etichete diferite.

De fiecare dat cnd se ntlnete situaia n care dou etichete diferite se pot propaga la acelai pixel, se va asigna eticheta cea mai mic i echivalena gsit se introduce ntr-o tabel de echivalene (exemplu figura 6: (4,3), (3,5), (3,2)).

Fig.6. Imagine etichetat dup pasul 1

Fiecare intrare din tabela de echivalen const ntr-o pereche ordonat, valorile coninute n fiecare pereche fiind valorile etichetelor gsite echivalente.

Se gsesc apoi clasele de echivalen. Fiecrei clase de echivalen i se asigneaz o etichet unic.

Pasul 3. Se parcurge imaginea i se atribuie fiecrui pixel valoarea etichetei corespunztoare clasei de echivalen din care face parte.

Dup etichetare se va putea trece la realizarea de diferite msurtori pentru fiecare obiect n parte.2.2. Procesoare

O familie de procesoare destinate aplicatiilor embedded este familia ARM de la Texas Instruments. Aceasta acopera peste 78% din procesoarele embedded pe 32 de biti, devenind astfel una dintre cele mai prolifice arhitecturi pe 32 de biti din lume. Ele folosesc arhitectura RISC standard (arhitectur load-store, moduri simple de adresare bazate doar pe coninutul registrelor sau pe informaia din formatul instruciunii, lungime fix a instruciunilor, etc.). Piaa lor este constituit de telefonia celular i lumea dispozitivelor portabile, unde puterea consumat este mai important dect orice altceva.

Familia de procesoare Blackfin a fost lansat pe pia de ctre liderul mondial n semiconductoare de nalt performan pentru aplicaii de procesare a semnalului, Analog Devices.

Un alt aspect funcional important al procesoarelor Blackfin este faptul c execut eficient att cod de control, ct i de procesare de semnal. Deci, un astfel de procesor poate lucra fie ca microcontroller (MCU), fie ca DSP, ori ca o combinaie a acestora.

De asemenea, procesoarele Blackfin suport sisteme de operare embedded.

Astfel, cu ajutorul acestora se poate ajunge la satisfcea cerinelor de calcul i a constrngerilor de putere din aplicaiile embedded din domeniul audio, video i al comunicaiilor. 2.2.1. Procesorul ADSP-BF533

Procesorul ADSP-BF533 este un membru al familiei Blackfin, cu performane ridicate i consum de putere semnificativ mai mic dect al celor anterioare, reuind s pstreze beneficiile compatibilitii codului i facilitii de utilizare.

Frecvena de lucru a procesorului se stabilete de ctre utilizator prin scrierea n registrul de control al circuitului PLL (Phase Locked Loop) a unui factor (msel=163) de multiplicare a ceasului CLKIN. Frecvena maxim este de 600MHz.

Frecvena de lucru a dispozitivelor periferice (SCLK) se obine din relaia:

ssel se scrie n registrul PLL_DIV.Din sistemul de periferice al procesorului fac parte:

Interfaa Paralel (Parallel Peripheral Interface - PPI)

Porturi Seriale (Serial Ports - SPORTs)

Interfaa Serial Sincron (Serial Peripheral Interface - SPI)

Timers

Circuit de interfa pentru transmisie asincron (Universal Asynchronous Receiver Transmitter - UART)

Ceas de Timp Real (Real-Time Clock - RTC)

Watchdog timerAceste periferice se conecteaz la procesor printr-o serie de magistrale de band larg, aa cum se art n figur 7.

Fig.7. Diagram bloc a procesorului ADSP-BF533 ( [4] )

Exist, de asemenea, dou canale de memorie DMA separate, dedicate transferurilor de date ntre diferite spaii de memorie, aici incluzndu-se i memoria extern SDRAM i memoria asincron.2.2.2. PPI Parallel Peripheral InterfacePPI-ul este o unitate periferic ntlnit la procesoarele Blackfin. Ea lucreaz cu fluxuri de date, de pn la 16 bii, bidirecional, half-duplex i este destinat conectrii directe la LCD-uri, senzori CMOS, CCD, convertoare video digital-analogice (codor), convertoare video analog-digitale (decodor) sau la orice dispozitiv paralel de mare vitez. Din acest motiv, deseori se face referire la PPI ca la un port video.

n figur urmtoare este reprezentat schema bloc a interfeei periferice.

Fig.8. Schem bloc PPI ( [5])

Pentru setarea modului de operare dorit i determinarea strii PPI-ului se utilizeaz 5 regitri: PPI_CONTROL, PPI_COUNT, PPI_STATUS, PPI_DELAY i PPI_FRAME. Blocul PACK/ UNPACK ajut la creterea eficienei de transmisie a datelor pe 8 bii prin mpachetarea acestora n cuvinte pe 16 bii.

Cele 3 semnale numite FS1, FS2 i FS3 sunt linii de sincronizare a cadrelor, iar PPI_CLK este un pin pentru conectarea unui ceas extern de rezerv.

PPI Control Register (PPI_CONTROL)

Registrul PPI_CONTROL este registrul principal al portului video ce ajut la configurarea modului de operare dorit, a polaritilor semnalelor de control i limii datelor transmise. Figura 9 prezint diagrama de bii a acestui registru.

Fig.9. Registrul de control PPI ( [4] )

PPI_FRAME Register

Aici, se nscrie numrul de linii ateptate pentru un cadru.

Dac nceputul unui nou cadru (sau cmp) este detectat nainte c numrul de linii specificat n registru s fi fost transferat, va apare o eroare (Frame Track Error), ns PPI-ul va numra pn la valoarea nscris n PPI_FRAME i transferul de date va continua.

Fig.10. Registrul PPI_FRAME ([4])

2.2.3. UART - Universal Asynchronous Receiver Transmitter

Procesorul BF533 are inclus att o interfa de comunicare sincron, ct i una asincron.

Interfaa serial sincron este cunoscut sub denumirea de Serial Peripheral Interface(SPI), n timp ce circuitul de interfa folosit pentru realizarea transmisiei asincrone este numit Universal Asynchronous Receiver Transmitter (UART sau SCI = Serial Communication Interface).

Dispozitivul UART este un convertor de date, paralel serie la transmisie (Tx) i serie paralel la recepie (Rx), cu posibilitatea lucrului full- sau half-duplex. Este numit universal ntruct poate fi programat de utilizator prin cuvinte de control predefinite ce selecteaz anumite moduri de operare. Asincronismul comunicaiei este dat de faptul c UART asigur transmiterea independent a fiecrui caracter pe linie.

Utilizatorul seteaz, prin configurarea regitrilor UART, parametrii de baz ai comunicaiei seriale. Printre acetia:

ntre 5 i 8 bii de date;

1, 1 sau 2 bii de stop; paritate par, impar sau fr paritate;

debitul binar (baud rate) care este selectat dintr-o gam de valori standard.

Toate cuvintele au un bit de start i cel puin un bit de stop, astfel lungimea unui cuvnt situndu-se n gama 712 bii.

Figura 11 arat un flux tipic de bii msurat pe pinul TX.

Fig.11. Flux de bii pe pinul TXCircuitul UART are 10 regitri de control i de stare, accesibili extern (prin program). Ali doi regitri (Receiver Shift Register i Transmitter Shift Register) pot fi accesai numai intern.UART Line Control Register (UART_LCR)

Registrul de control al liniei stabilete parametrii de baz ai comunicaiei seriale, printre care i formatul cadrelor transmise i recepionate.

Structura acestuia este dat n figur urmtoare.

Fig.12. Registrul de Control al Liniei ([4])

UART Line Status Register(UART_LSR)

Acest registru furnizeaz informaii despre starea liniei de comunicaie. Biii 6 i 5 se refer la transmisie, n timp ce biii 40 se refer la recepie (figura 13).

Fig.13. Registrul de Stare a Liniei ([4])

UART Transmit Holding Register(UART_THR)

Reprezint bufferul de transmisie i poate fi accesat dac bitul DLAB din UART_LCR este 0. Caracterul ce va fi transmis este scris n acest registru.

Transmitorul conine un registru paralel n care primete un cuvnt de transmis. UART mut codul paralel n Transmitter Shift Register. De aici biii pot fi emii serial pe linia de comunicaie cu un tact obinut prin divizarea ceasului sistemului (SCLK).

Dup ce cuvntul a fost transferat din THR n TSR (THR se golete), bitul 5 al UART_LSR (THRE) devine 1 i se genereaz o cerere de ntrerupere, dac acest tip de ntrerupere a fost validat. n acest moment UART este dispus s accepte un nou caracter pentru a fi transmis.

Fig.14. Registrul de Transmisie ([4])

UART Divisor Latch Registers (UART_DLL, UART_DLH)

Registrul UART_DLL conine octetul mai puin semnificativ al divizorului din relaia (12), iar UART_DLH pe cel mai semnificativ. La reset, UART_DLL devine 0x0001 rezultnd cea mai mare frecven de ceas posibil.

Regitrii pot fi accesai doar dac bitul DLAB din UART_LCR este 1.

Fig.15. Regitrii de divizare ([4])

UART Global Control Register (UART_GCTL)

Conine bii de activare a ceasurilor UART i a modului de operare half-duplex IrDA (Infrared Data Association). Structura acestui registru este dat n figur 16.

Fig.16. Registru de Control Global ([4])

2.2.4. DMA Direct Memory Access

Transferul de date prin acces direct la memorie (DMA) se realizeaz ntre dou spaii de memorie sau ntre memorie i un dispozitiv periferic, fr intervenia direct a unitii centrale de prelucrare (CPU), sub comanda unui circuit controller DMA. Acesta controleaz temporar magistralele sistemului.

Un transfer DMA include 3 faze:

Iniializare.

Procesorul nscrie n regitrii interni ai controller-ului DMA anumite informaii privitoare la transferul dorit (sensul de transfer: citire/scriere, adresa de nceput de la care se citesc sau n care se scriu date, numrul de cuvinte de transferat,)

Dup primirea informaiilor, procesorul este eliberat, operaia de transfer fiind efectuat de DMA controller.

Transfer efectiv de date

n figur 17 se prezint schema de conexiuni pentru transferul DMA, presupunndu-se c iniierea transferului se face de ctre dispozitivul periferic.

Fig.17. Schema de conexiuni pentru transferul DMA

Perifericul trimite un semnal de cerere de transfer DMA circuitului controller DMA. La rndul su acesta genereaz un semnal BR (Bus Request) prin care solicit unitii centrale de prelucrare controlul magistralelor. CPU cedeaz controlul magistralelor dup terminarea ciclului main curent i genereaz ctre controller-ul DMA semnalul BG (Bus Grant) prin care anun despre aceasta.

Controller-ul DMA furnizeaz apoi adresele pe magistrala de adrese, preia controlul semnalelor de scriere i citire i i transmite perifericului semnalul de acceptare DMA. La primirea acestui semnal, perifericul pune un cuvnt pe magistrala de date (scriere n memorie) sau citete un cuvnt de pe magistral (citire din memorie).

Transferul de date se face astfel direct ntre memorie i periferic.

n cadrul unui ciclu DMA se transfer un singur cuvnt. Dup terminarea unui ciclu, controller-ul poate continua cu alte cicluri DMA sau poate returna controlul magistralelor ctre unitatea central prin dezactivarea semnalului de cerere BR.

Circuitele de control DMA pot deservi simultan mai multe periferice, pentru fiecare dispozitiv periferic existnd un canal DMA.

n cazul unor cereri simultane, deservirea lor se face pe baz de prioriti.

Verificarea terminrii i corectitudinii transferuluiIn functie de tipul transferului realizat, regitrii DMA se mpart n 2 categorii:

regitri pentru transfer ntre memorie i periferic.

regitri pentru transfer ntre memorii.Acetia, la rndul lor, pot fi:

- regitri parametru, cum sunt

DMAx_CONFIG / MDMA_yy_CONFIG

DMAx_X_COUNT / MDMA_yy_X_COUNT, - regitri cureni, ca

DMAx_CURR_ADDR / MDMA_yy_CURR_ADDR

DMAx_CURR_X_COUNT / MDMA_yy_CURR_X_COUNT,- regitri de control/stare:DMAx_PERIPHERAL_MAP / MDMA_yy_PERIPHERAL_MAP

DMAx_IRQ_STATUS / MDMA_yy_IRQ_STATUS.Litera x din notaia DMAx reprezint numrul canalului DMA utilizat i poate fi ntre 0 i 7, n timp ce yy din MDMA_yy este S0 sau S1 dac se citete din memorie (surs) sau D0 sau D1 cnd se scrie n memorie (destinaie).

O parte din regitri sunt prezentai n cele ce urmeaz.

DMAx_START_ADDR / MDMA_yy_START_ADDR Register

Indic adresa de start a transferului DMA.

CURR_ADDR conine adresa de la care ncepe transferul DMA curent. La nceputul unei sesiuni DMA, n registrul CURR_ADDR se ncarc valoarea din START_ADDR i pe msur ce are loc un transfer aceasta este incrementat.

DMAx_X_COUNT / MDMA_yy_X_COUNT Register

n cazul DMA unidimensional, acest registru arat numrul de elemente de transferat, n timp ce pentru DMA 2D conine lungimea unei linii.

CURR_X_COUNT se ncarc cu valoarea din registrul X_COUNT la nceputul fiecrei sesiuni DMA (1D) sau dup terminarea transferului fiecrei linii (2D). De altfel, valoarea nscris n CURR_X_COUNT este decrementata de fiecare dat cnd un element este transferat. Se ajunge la 0 cnd transferul de date este complet.

DMAx_X_MODIFY / MDMA_yy_X_MODIFY Register

Specific numrul de octei cu care se va incrementa adresa dup ce CURR_X_COUNT se decrementeaz. Incrementul nu se aplic ultimului element al unei linii dect n cazul n care aceasta este ultima linie a transferului.

X_MODIFY poate fi setat la 0, caz n care transferul DMA se produce la / de la aceeai adres.

DMAx_Y_COUNT / MDMA_yy_Y_COUNT Register

Conine numrul de linii ce urmeaz a fi transferate. Nu este folosit n cazul n care DMA este unidimensional.

CURR_Y_COUNT se ncarc cu valoarea din registrul Y_COUNT la nceputul fiecrei sesiuni DMA 2D, valoarea sa fiind decrementata de fiecare dat cnd CURR_X_COUNT trece din 1 n X_COUNT sau din 1 n 0 artnd astfel transferul complet al unei linii.DMAx_Y_MODIFY / MDMA_yy_Y_MODIFY Register

Specific numrul de octei cu care se va incrementa adresa dup ce CURR_Y_COUNT se decrementeaz. Incrementul nu se aplic ultimului element de pe ultima linie a matricii.DMAx_CONFIG / MDMA_yy_CONFIG Register

Registrul de configurare DMA, ilustrat n figur 18, este utilizat pentru setarea parametrilor DMA i a modurilor de operare.

Fig. 18. Registrul de configurare DMA ([4])

Cnd un canal DMA este activat, ntreruperile trimise de periferic sunt vzute de DMA ca i cereri. Atunci cnd canalul este fcut inactiv (DMAEN=0), ntreruperile trimise de periferic sunt ignorate de unitatea DMA i ajung la controllerul de ntreruperi. Pentru evitarea rezultatelor neateptate, trebuie activat canalul DMA nainte de activarea perifericului,iar dezactivarea perifericului realizat nainte de a face canalul DMA inactiv.DMAx_PERIPHERAL_MAP / MDMA_yy_PERIPHERAL MAP Register

Prin configurarea celor mai semnificativi 4 bii se poziioneaz canalul DMA la un anumit periferic, n timp ce bitul 6 indic tipul transferului DMA dorit.n figur 19 este dat diagrama de bii a acestui registru.

Fig.19. Registrul PERIPHERAL_MAP ([4])

Trebuie s existe o coresponden de 1 la 1 ntre canalele DMA i periferice. Utilizatorul este responsabil pentru asigurarea acestui lucru. n cazul n care mai multor canale li s-ar asocia acelai periferic, s-ar conecta doar un canal, cel cu prioritatea cea mai mic.

DMAx_IRQ_STATUS / MDMA_yy_IRQ_STATUS Register

Registrul de stare a ntreruperii, ilustrat n figur 20, conine bii ce arat cnd:

are loc transfer de date

apare o eroare DMA

are loc ntreruperea canalului DMA

Fig.20. Registrul de stare a ntreruperii

2.2.5. Date de tip Fract

Procesoarele ADSP-BF53X pot lucra att cu tipurile de date clasice, ct i cu cele notate Q1.15 i Q1.31 numite fract16 i respectiv fract32.

Formatul 1.15 include 1 bit de semn (cel mai semnificativ) i 15 bii reprezentnd partea fracionar. Aceasta poate lua valori n intervalul [-1,0.999969].

n figur 21 este dat diagrama de bii a numerelor n format Q1.15, precum i echivalena hexazecimal-binar-zecimal pentru cteva astfel de numere.

Fig.21. Exemple de numere pe 16 bii n format 1.15

Relaia general cu ajutorul creia se determin valoarea n zecimal a unui numr n format Qm.n este:

n care N reprezint numrul total de bii.

Pentru realizarea operaiilor aritmetice cu tipuri de date fract, nu se utilizeaz operatorii C standard. n headerul fract.h exist o serie de funcii predefinite utilizabile n acest scop. 2.2.6. Standardul ITU-R656

ITU-R BT.656, de multe ori numit mai scurt ITU656, descrie un protocol pentru transmiterea semnalelor video PAL (625 linii) sau NTSC (525 linii). Un flux de date BT.656 este o secven de cuvinte pe 8 sau 10 bii transmis cu 27MByte/s.

Conform recomandrii ITU-R 656 (fost CCIR-656), caracteristicile unui un flux video digital sunt cele ilustrate n figurile 22 i 23 (pentru standardele 525/60 - NTSC i 625/50 - PAL) .

Fig.22. Flux de date pe 8 bii

a. Standardul NTSC b. Standardul PAL

Fig.23. Divizarea unui cadru video

O caracteristica distinctiva a acestui standard este faptul ca octeii de sincronizare H (Horizontal), V(Vertical) i F(Field) sunt ncorporai n fluxul de date video. H , n funcie de valoarea sa, indic nceputul sau sfritul unei linii.

V este 1 n timpul blancului vertical i 0 n caz contrar.

F arat trecerea de la un cmp la altul. Sunt furnizate date video intercalate (explorare ntreesut), cele dou cmpuri ale unui cadru fiind transmise separat.

SAV (Start of Active Video) i EAV (End of Active Video) sunt secvene de cte 4 octei ce delimiteaza datele de pe fiecare linie. Se observ c primii 3 octei (0xFF, 0x00, 0x00) sunt urmai de un cuvnt de stare XY. Acesta conine, pe lng S, V i H, 4 bii (P3, P2, P1, P0) pentru detecia i corecia erorilor.

P3 = V XOR H

P2 = F XOR H

P1 = F XOR V

P0 = F XOR V XOR H.

Elementele unei linii sunt transmise n format YCbCr. Y descrie nivelul luminanei, n timp ce Cb i Cr dau informaia de culoare.

2.2.7. JTAG Joint Test Action Group

JTAG ICE este un emulator puternic pentru toate microcontrolerele cu interfaa JTAG IEEE 1149.1, cu suport de emulare inclus n cip (on-chip debugging). Acesta ofer utilizatorului control asupra resurselor interne ale microcontrolerului, ajutnd la reducerea timpului de dezvoltare i fcnd depanarea mai uoar. JTAG ICE realizeaz emularea microcontrolerului n timp real n timp ce se ruleaz aplicaia n sistemul int.

Caracteristici principale:

Interfa spre PC: RS-232

Suport pentru breakpoint pe program i pe date

Depanare pe cod surs sau pe cod C

Programare n sistem prin interfaa JTAG

Monitorizare memorie Flash, memorie SRAM, set de regitri, module I/O.

O mare parte a sistemelor embedded au port JTAG.

2.3. Platforma de dezvoltare ADSP-BF533 EZ-KIT LITE

ADSP-BF533 EZ-KIT LITE este o plac de dezvoltare pentru procesare digital a semnalelor, dedicat procesorului Analog Device Blackfin 533. Cu ajutorul acesteia se poate evalua o gam larg de aplicaii inclusiv procesare audio i video.

Principalele elemente hardware existente pe plac sunt:

Procesor ADSP-BF533 (CLKIN=27 MHz)

32 MB (16M x 16bit) SDRAM. Permite utilizatorilor s evalueze codul care utilizeaz controlerul SDRAM al procesorului.

2 memorii Flash cu un total de 2MB (512K x 16bit x 2). Pot fi utilizate pentru stocarea unui boot-code, permind plcii s funcioneze ca o unitate stand-alone.

Codec audio AD1836 cu 4 intrri (2 canale) i 6 ieiri (3 canale).

Decodor video ADV7183 cu 3 intrri. Recunoate i convertete automat un semnal video compatibil cu standardele NTSC sau PAL n date video compatibile cu standardele ITU-R601/ ITU-R656.

Codor video ADV7171 cu 3 ieiri

Conector JTAG,USB. Accesarea procesorului de la un calculator este posibil prin intermediul unui port USB sau a unui emulator JTAG.

Conector UART. Se conecteaz la o linie RS232 realiznd interfaarea cu un dispozitiv serial.

Fig.24. Placa de dezvoltare ADSP-BF533 EZ-KIT LITE

Pentru testarea performanelor procesorului placa se utilizeaz numai cu mediul de dezvoltare VisualDSP++. Cu VisualDSP++ se poate:

Crea, compila, asambla, edita legturi pentru aplicaii scrise n C,C++ sau limbaj de asamblare.

Incarca, executa, rula pas cu pas, opri programele aplicaie. Se pot, de asemenea, seta breakpoint-uri.

Citi / scrie regitri procesorului.

Reprezenta grafic date din memorie.

CAPITOLUL 3 CONTRIBUII, REZULTATE I CONCLUZIIS-au realizat o serie de prelucrri uzuale de imagini pentru ca apoi o parte dintre ele s se utilizeze n implementarea unei aplicaii capabile s recunoasc figurile geometrice din imagini captate in mod continuu i s urmreasc cercul cu aria cea mai mare.3.1. Operaii morfologice - Erodarea i dilatarea

Erodarea i dilatarea unei imagini binare s-au realizat cu funciile predefinite _erosion i respectiv _dilation. Acestea au ca parametri de intrare, imaginea de prelucrat cu dimensiunile ei ct i elementul structurant folosit. Se consider pixelii obiect avnd valoarea 1, n timp ce pixelii fond sunt negri (valoarea 0).Dac elementul structurant este , iar elementele luate n considerare la un anumit moment al prelucrrii sunt , atunci y11 obinut va fi: dup erodare

y11 = ((x00&h00) & (x01&h01) & (x02&h02) & (x10&h10) & (x11&h11) & (x12&h12) & (x20&h20) & (x21&h21) & (x22 &h22));

dup dilatare

y11 = ((x00&h00) | (x01&h01) | (x02&h02) |(x10&h10) | (x11&h11) | (x12&h12) | (x20&h20) | (x21&h21) | (x22 &h22));

Operaiile de erodare i dilatare se pot aplica n cazul n care se dorete detectarea defectelor de pe cablajele imprimate. Prin erodare se pune n eviden o zon de traseu prea subire. Prin dilatare se arat zonele n care traseele risc s se ating. Acest lucru este exemplificat n figur 25.

Imaginea original Erodare Dilatare

Fig.25

Grosimea traseelor este prea mare sau distan dintre ele prea mic, observndu-se n a treia imagine c dou dintre acestea se unesc.

Numrul de cicli de procesor necesari pentru realizarea erodrii: 8.500.000

Numrul de cicli de procesor necesari pentru realizarea dilatrii: 7.230.000

3.2. Filtrarea trece jos cu filtru Gaussian

S-a realizat filtrarea trece jos spaial cu un filtru Gaussian, masca de convoluie mask[3][3] fiind dat de relaia (14)

n care G2D(x,y) se determin cu ajutorul relaiei

.

tiind c dimensiunea mtii este de 6 ori deviaia standard, pentru o masc de 3x3, va rezulta =0.5.Astfel

Inlocuind n relaia (14) aceste valori, se obine:

Pentru realizarea convoluiei s-a folosit funcia conv2d_fr16 din headerul filter.h.

Prototipul funciei este:

void conv2d_fr16(const fract16 *input, int rin, int cin,

const fract16 *mask, int rm, int cm, fract16 *output );

Funcia conv2d_fr16 calculeaz convoluia bidimensional a matricii de intrare input de dimensiune rin*cin cu masca mask avnd rm linii i cm coloane. Dup convoluie va rezulta matricea output de dimensiune (rin+rm-1)*(cin+cm-1).

Convoluia bidimensional dintre input i mask este definit de relaia:

pentru . (rin si cin reprezinta numarul de linii si respectiv de coloane ale matricii de intrare input, in timp ce rm si cm sunt dimensiunile mastii)Deoarece complexitatea de calcul crete odat cu creterea vecintii, deci este mai eficient s se lucreze cu vecinti de dimensiune mic, este de dorit c matricea nucleu s se descompun ntr-un produs de doi vectori (unul orizontal i unul vertical).

Intrucat functia Gaussian bidimensionala se exprima prin produsul a doua functii 1D, una pentru fiecare directie, masca data de relatia (14) poate fi scrisa:

unde

ntruct domeniul de definiie al funciei conv2d_fr16 este [-1,1] i matricile folosite ca argumente sunt de tip fract16, pentru ca aceasta s poat fi utilizat este necesar aplicarea unor funcii suplimentare att valorilor pixelilor imaginii ce se dorete a fi filtrat, ct i mtii. Funcia scalare realizeaz corespondena liniar dintre un numr de tip unsigned char din intervalul [0,255] i un float din [-1,1], n timp ce float_to_fr16 face conversia de la float la tipul de date fract16.

Se aplic mai nti formula de convoluie pentru matricea imaginii i vectorul orizontal al matricii nucleu descompuse (mask1), urmnd apoi convoluia cu vectorul vertical (mask2). Se va folosi o matrice intermediar n care se vor reine rezultatele dup aplicarea primei etape de convoluie i asupra creia se va aplica etapa a doua de convoluie.

Pentru observarea rezultatelor filtrrii, se aplic matricii de ieire output, cu elemente de tip fract16, funciile fr16_to_float i apoi scalare_inv. Aceste funcii realizeaz operaiile inverse celor definite prin float_to_fr16 i respectiv scalare.

n figurile 26b i 26c se observ efectele filtrrii trece jos, evideniindu-se i efectul de blur obinut n urma filtrrii succesive.

a) Imaginea original b)Imaginea filtrat cu maskc)Filtrare repetat cu mask

Fig.26. (VisualDSP++)

Filtrarea realizat prin convoluia cu cei doi vectori mask1 i mask2 economisete aproximativ 1.500.000 cicli de procesor n comparaie cu situaia n care se face o singur convoluie (cu mask) ( 8423430 cicli - 2 convoluii cu vectori, 9928306 cicli - o convoluie cu matrice). 10.000.000 cicli de procesor convolutie cu matrice 8.500.000 cicli de procesor doua convolutii cu vectori3.3. Accentuarea muchiilor utiliznd operatorul Sobel

Algoritmul de implementare a filtrului de detecie a muchiilor este acelai ca n cazul filtrrii trece jos, utilizndu-se aceleai funcii (scalare, float_to_fr16, conv2d_fr16, fr16_to_float, scalare_inv).

Se pot folosi doar 4 din cele 8 nuclee de convoluie, n cazul de fa utilizndu-se:

k1 i k5 ajut la derivarea pe vertical, n timp ce pentru aflarea derivatei pe orizontal se utilizeaz k3 i k7

Descompunerea mtii n produs de vectori implic un numr mai mic de calcule.

Rezultatele celor dou derivate pentru imaginea din figura 26a sunt date n figurile 27a i respectiv 27b, iar variaia maxim a intensitii este ilustrat n figur 27c.

a)Detecia muchiilor orizontale b)Detecia muchiilor verticale c) Detecia tuturor muchiilor

Fig.27. (VisualDSP++)

Sunt necesari aproximativ 30.650.000 cicli de procesor pentru o astfel de prelucrare, ceea ce nseamn un timp de 0.05 secunde.

3.4. Filtrarea temporal

Pentru analiza micrii obiectelor din imagini captate n mod continuu s-a utilizat filtrarea temporal. Algoritmul ce st la baza acestui tip de filtrare este ilustrat n figur 28.

Fig.28. Algoritm utilizat pentru realizarea filtrrii temporale

Masca de filtrare folosit este mask = [1, -2, 1] i, ntruct numrul de imagini luate n considerare la un anumit moment trebuie s fie egal cu dimensiunea mtii, se iau n calcul 3 imagini successive denumite im1, im2 i im3.

Exist funcii predefinite att pentru realizarea produsului dintre o matrice i un scalar (matsmltf), ct i pentru sumarea a dou matrici (matmaddf). S-a optat pentru utilizarea acestora, dei au ca parametri de intrare date de tip float.

Elementele matricii rez1 obinute vor avea valori cuprinse n intervalul [-510, 510] motiv pentru care se consider necesar realizarea unei scalri. n urma acesteia rezult matricea rez cu elemente de tip unsigned char avnd valori ntre 0 i 255.

Pentru filtrarea temporal procesorul are nevoie de circa 19.125.000 de cicli.

3.5. Segmentarea

Pentru obinerea imaginii segmentate s-a implementat o funcie numit segmentare(), n care, mai nti, se construiete histograma imaginii de prelucrat, dup care are loc o filtrare cu un filtru fir a valorilor acesteia. Pragul este estimat prin observarea histogramei filtrate a imaginii de segmentat.

Se porneste de la premiza c se vor prelucra imagini cu obiecte ntunecate pe fond luminos.Din histograma obinut dup filtrare, se determin nivelul de gri (k1) corespunztor ultimei rampe cztoare semnificative (s fie cel puin 10% din frecven maxim de apariie din grafic) din prima jumtate a gamei nivelurilor de gri, (0,127), i abscisa (k2) corespunztoare maximului frecvenelor de apariie din intervalul (127,255). k1 va aparine obiectului mai luminos dintr-o mulime de obiecte, iar k2 fondului.

Pentru aflarea pragului de segmentare (Th) se va gsi minimul local din intervalul (k1,k2) (valorile histogramei trebuie filtrate pentru a nu avea de ales ntre mai multe minime locale).

Segmentarea se va face prin compararea valorii fiecrui pixel din imagine cu pragul Th i nlocuirea acesteia cu 0 dac este mai mic dect Th sau cu 255 n caz contrar. Astfel, obiectele vor deveni negre, iar fondul alb.

Pentru imaginea din figura 29a, dup observarea histogramei filtrare (fig.29c), s-a obinut pragul de segmentare la 91 (minimul local din intervalul (63,176)). Imaginea segmentat este cea din figura 29d.

b) c)

Fig.29. a) imaginea de prelucrat; b) histograma imaginii de prelucrat;

c) histograma obinut dup filtrare; d) imaginea segmentat. (VisualDSP++)

Segmentarea se realizeaz n 0.014 secunde, echivalentul a 8.870.000 cicli de processor.3.6. Etichetarea

S-a realizat etichetarea obiectelor dintr-o imagine binar (fond-255, obiect-0), n urmtorii 2 pai:

Pasul 1.Etichetarea pixelilor din imaginea surs

Schema bloc a algoritmului folosit este dat n figur 30, n care A, B, C, D i X sunt valorile a 5 pixeli vecini plasai ca n figur 31.

Fig.30. Schema bloc a algoritmului de etichetare ([6])

Fig.31. Conectivitate de 5 ([6])

S-au utilizat urmtoarele notaii:

et este noua etichet.

pas este un numr ntreg reprezentnd diferena dintre dou etichete consecutive.

Imaginea binar de la intrare este parcurs pixel cu pixel de sus n jos pe linii i de la stnga la dreapta pe coloane, ns deoarece pentru pixelul de etichetat (X), din conectivitatea de 5, trebuie s se poat defini cei patru vecini ai si (A, B, C, D), parcurgerea se va face ncepnd cu a doua linie i a doua coloan i se va termina pe ultima linie i penultima coloan. n caz contrar, vor apare erori de depire a capacitii de memorie alocate.

Este posibil ca n urma aplicrii acestui algoritm, dou mulimi disjuncte de pixeli din acelai obiect s aib atribuite etichete diferite. Din acest motiv, apare necesitatea realizrii pasului 2.

Pasul 2. Reetichetarea

Pentru a face n aa fel nct pixelilor coneci s le corespund aceeai etichet, se parcurge imaginea i n cazul n care se gsesc dou etichete vecine cu valori diferite, se determin cea mai mic dintre ele, iar aceast valoare se asociaz att vecinului cu eticheta diferit, ct i celorlali pixeli din imagine cu aceeai etichet ca a vecinului.

Dezavantajul acestui algoritm de etichetare const n faptul c, obiectelor cu pixeli pe cel puin una din marginile imaginii nu li se asociaz nici o etichet. Pentru a compensa acest lucru, se recurge o soluie de compromis: marginile imaginii se fac albe cu riscul de a micora ariiile obiectelor ce nu fuseser etichetate.

Pentru realizarea pasului 1, procesorul a avut nevoie de aproximativ 3.400.000 de cicli, iar pentru pasul 2, ntruct se parcurge imaginea de mai multe ori, au fost necesari 24.310.000 cicli.

3.7. Detecia contururilor

Pentru obinerea contururilor obiectelor dintr-o imagine, se poate utiliza filtrarea trece sus cu ajutorul operatorului Sobel sau funcia predefinita _perimeter. ntruct se dorete realizarea acestui lucru ntr-un timp ct mai scurt, iar utilizarea filtrului Sobel necesit operaii de scalare i conversie la tipul de date fract16, s-a optat pentru funcia _perimeter.

Fig.32. Pixeli considerai conectai pentru detecia contururilor

Aceasta este descris, pentru pixelul p_boundary conectat ca n figur 32, de ctre codul C:

p_boundary face parte din contur dac este pixel obiect i cel puin un vecin din cei 4 ai si este pixel fond (1-fond, 0-obiect).

n figur 33 este dat un exemplu de utilizare a funciei _perimeter.

a) imaginea de prelucrat b) detecia contururilor

Fig.33. Detecia contururilor cu funcia _perimeter (VisualDSP++)

Detecia contururilor cu operatorul Sobel se realizeaza n aproximativ 30.500.000 de cicli de procesor, n timp ce utiliznd funcia _perimeter sunt necesari circa 5.500.000 de cicli. 3.8. Aplicaie de recunoatere i urmrire

Exist numeroase aplicaii ce au la baz procesarea imaginilor, dintre acestea fcnd parte i cele de urmrire a unui obiect cu anumite caracteristici.

Proiectul de fa prezint procesarea imaginilor n sisteme embedded prin implementarea unui sistem capabil s recunoasc figurile geometrice din imagini captate n timp real, pentru ca apoi s urmreasc cercul cu aria cea mai mare.

Metoda propus pentru realizarea acestui lucru respect schema din figura 34.

Fig.34. Schema bloc a algoritmului de urmrire

3.8.1. Achiziia imaginilor

Pentru achiziia imaginilor n mod continuu se utilizeaz algoritmul prezentat n figur 35.

Fig.35. Algoritm de achiziie a imaginilor

Dintre cele mai importante dispozitive ce stau la baza achiziiei imaginilor fac parte PPI-ul i DMA-ul.ntruct se urmrete recunoaterea figurilor geometrice dintr-o imagine, luminozitatea este componenta ce conine informaia relevant. Astfel, registrul PPI_CONTROL al interfeei paralele se configureaz dup cum urmeaz:

*pPPI_CONTROL = PORT_EN | DLEN_8 | PACK_EN | FLD_SEL | SKIP_EN ;

PORT_EN este setat pentru activarea portului.

DLEN_8 DLEN=000 specific faptul c are loc transfer de date pe 8 bii.

Deoarece magistrala DMA este pe 16 bii, iar limea portului PPI de 8 bii, fr activarea bitului PACK_EN s-ar irosi jumtate dintr-un cuvnt. Deci, PACK_EN este 1 pentru a crete eficiena de transmisie, astfel 2 octei de date fiind mpachetai ntr-un cuvnt pe 16 bii.

Pentru a se transmite elemente din ambele cmpuri ale imaginii, FLD_SEL=1.

Se activeaz bitul SKIP_EN pentru a face posibil ignorarea elementelor impare ale intrrii (SKIP_EO=0), deci pentru a se citi doar luminozitatea.Accesul direct la memorie este utilizat iniial pentru transferul datelor ntre memorie i periferic, urmnd a se obine imaginea de prelucrat prin transfer ntre memorii.

Pentru realizarea transferului ntre memorie i periferic s-a configurat registrul DMA_CONFIG:

*pDMA0_CONFIG = DMAEN | WNR | WDSIZE_16 | DMA2D | DI_EN | RESTART;

Pentru activarea canalului se seteaz bitul DMAEN.

WNR=1 face posibil scrierea n memorie.

WDSIZE_16WDSIZE=01 arat c DMA-ul transfer elemente pe 16 bii.

ntruct informaia de luminozitate a unui cadru video NTSC ocup 369kB (720x525 octei) i DMA-ul poate direciona pn la 64kB, s-a considerat necesar configurarea DMA-ului cu dou dimensiuni (DMA_2D=1) ceea ce permite transfer de memorie de pn la 64kBx64kB.

Cmpul FLOW este 0 (Stop Mode) ceea ce face ca dup completarea ntregului buffer (DI_SEL=0), canalul DMA s se blocheze i s genereze ntrerupere.

Pentru a se permite generarea ntreruperi, i bitul DI_EN trebuie setat.

Bitul RESTART este 1 dorindu-se ca naintea nceperii unei noi aciuni s se renune la datele primate pn atunci.

Dup achiziia imaginii n format NTSC (525pixeli x 720pixeli), cu dou cmpuri ntreesute (im1), se obine o imagine mai mic (im2), imaginea de prelucrat. Pentru aceasta, s-a configurat DMA-ul pentru transfer ntre memorii, cu ajutorul regitrilor corespunztori.

Se citesc elemente din 4 n 4 elemente de pe liniile impare ale primului cmp video ncepnd de la adresa im1 i se scriu ncepnd cu adresa im2. Astfel, imaginea obinut dup transfer va avea un sfert din numrul de coloane al imaginii iniiale (176) i jumtate din numrul de linii ale cmpului 1 (133).

Imaginea im2 se obine astfel n 450.000 de cicli, timp redus considerabil fa de situaia n care aceast sarcin ar fi fost realizat de ctre procesor.

3.8.2. Prelucrri

Aici, se realizeaz segmentarea la nivel local dup un prag estimat prin observarea histogramei filtrare a imaginii, dup care se gsesc contururile obiectelor cu ajutorul funciei _perimeter. n continuare, obiectele vor fi definite prin contururile lor.

Apoi este necesar etichetarea contururilor tocmai obinute pentru a se putea trece la calculul anumitor parametri. Cele 3 prelucrri (segmentare, detecie contur, etichetare) respect algoritmii descrii anterior.

Aria unui obiect se calculeaz prin sumarea tuturor pixelilor ce au aceeai etichet.

Pentru determinarea abscisei centrului de greutate al unui obiect, se calculeaz suma absciselor pixelilor cu eticheta corespunztoare obiectului respectiv, iar ulterior aceast sum se mparte la aria obiectului. Calculul ordonatei se realizeaz n mod analog.

ntruct se dorete urmrirea celui mai mare cerc din imagine, se caut apoi cele mai mari 3 obiecte prin plasarea tuturor ariilor ntr-un vector i ordonarea elementelor acestuia n mod descresctor prin metoda Bubble Sort. Primele 3 elemente ale vectorului obinut dup ordonare sunt cele mai mari 3 arii. Ulterior se gsesc indicii obiectelor avnd aceste arii i implicit celelalte caracteristici ale lor.

Pentru a vedea care dintre cele 3 obiecte, tocmai determinate, este cerc, se apeleaz la calculul varianelor cu ajutorul funciei predefinite varf.

Pentru determinarea varianei unui obiect se calculeaz distanele de la centrul la greutate al acestuia la pixelii contur corespunztori. Conturul se parcurge cu ajutorul unei funcii recursive (cod_lant()), iar pe msura parcurgerii lui se vor determina i distanele necesare.

Fig.36

n continuare sunt ilustrate aceste distane pentru cele mai mari 3 obiecte din figura 36.

a)

b)

c)

Fig.37. Distane de la centrul la greutate la contur pentru 3 figuri geometrice diferite (VisualDSP++)

3.8.3. Comanda servomotoarelor

Pentru a urmri obiectul gsit n etapa anterioar, se utilizeaz dou servomotoare de tip RC (Remote Control).

Un servomotor este compus dintr-un motor electric legat la un poteniometru. Atunci cnd primete o comand de schimbare a poziiei, i este transmis un semnal PWM i motorul este acionat pn cnd poteniometrul ajunge la valoarea corespunztoare poziiei dorite. Gama de micare a servomotorului este de 180o, ceea ce nseamn o lime a pulsului transmis ntre 0.5 i 2.5ms.Pentru a urmri obiectul gsit n etapa anterioar, iniial se calculeaz distanele de la centrul imaginii la centrul su de greutate. Apoi fiecare distan se nmulete cu o constant ce se determin n funcie de deschiderea camerei i dimensiunile imaginii de prelucrat.

n cazul de fa, camera poate vedea aproximativ 93 de grade pe orizontal i 53 vertical, iar dimensiunea imaginii este 133 pixeli x 176 pixeli. n plus, dac se transmite pe serial 255, servomotorul comandat va ajunge n poziia de 180 de grade.

Aceste date se scriu ntr-o form compact astfel

Produsele obinute se sumeaz cu poziiile curente ale servomotoarelor, iar rezultatele se transmit pe serial. Ulterior, coordonatele centrului de greutate al cercului cu aria cea mai mare vor corespunde cu cele ale centrului imaginii, cu o abatere de 3 pixeli att vertical, ct i pe orizontal, abatere cauzat de aproximaiile fcute. Aceast etap se realizeaz ntr-un timp relativ scurt - 5ms, corespunztor unui numr de 3.075.000 de cicli de procesor.

Configurare UART

Pentru realizarea comunicaiei pe serial se implementeaz funcia init_seriala() n care se configureaz regitrii UART.

Instruciunea *pUART_GCTL=UCEN este echivalent cu *pUART_GCTL=0x0001 i duce la activarea ceasurilor SCI.

Se seteaz apoi formatul cadrelor transmise i recepionate cu ajutorul registrului de control al liniei UART_LCR. Valoarea 0x83 selecteaz o lungime a cuvntului de 8 bii, 1 bit de stop, nu permite transmiterea i verificarea paritii (PEN=0) ceea ce duce la egalarea biilor 4 i 5 cu 0, iar bitul DLAB fiind 1 face posibil accesarea regitrilor de divizare n vederea stabilirii debitului binar dorit.

ntruct frecvena (CCLK) de lucru a procesorului este de 594MHz (CLKIN x msel=27MHz x 22), iar cea a perifericelor (SCLK) de 118,8MHz () i se dorete o rat de transmisie de 9600bps, va rezulta:

Astfel, UART_DLH=0x03 i UART_DLL=0x05.

Dup nscrierea valorilor n regitrii de divizare, bitul DLAB din UART_LCR se va face 0 pentru se putea accesa bufferul de transmisie (UART_THR), cel de recepie (UART_RBR) i registrul de activare a ntreruperilor (UART_IER), deci pentru a se putea ncepe transferul de date.3.9. Optimizri

Reducerea timpului de procesare este ntotdeauna un obiectiv al sistemelor ce funcioneaz n timp real.

Se urmrete mbuntirea codului intermediar astfel nct s rezulte un cod main mai rapid. n acest sens se recomand eliminarea valorilor duplicate dintr-o anumit structur, a calculelor i variabilelor inutile sau compactarea anumitor secvene.Se exemplific n continuare anumite metode de evitare a lucrului inutil din program.

Unele variabile sunt prefixate cu modificatorul register. Acesta i spune compilatorului c variabila respectiv va fi folosit frecvent, iar pentru optimizare va fi pstrat ntr-un registru. Opiunea funcioneaz pentru variabile de tip int i char.

Se folosete acest modificator n bucle (pentru variabilele contor din ciclurile for).

Se recomand scoaterea din bucle a mpririlor ntruct o mprire este destul de costisitoare (35 cicli).

nmulirile i mpririle cu puteri ale lui 2 se realizeaz prin deplasri pe bii la stnga, respectiv la dreapta.

Astfel dac x este fr semn mprirea dureaz un ciclu, iar pentru x cu semn 6 cicli.

Un alt mod de evitare a mpririi este nlocuirea condiiei:

Se prefer algoritmii care lucreaz cu numere ntregi, fa de cei pe numere reale, ntruct operaiile cu numere ntregi sunt mai rapide.

Atunci cnd limbajul de programare pune la dispoziie o anumit funcie pentru realizarea unei operaii, se utilizeaz funcia respectiv n schimbul unei funcii proprii. Instruciunile condiionale se nlocuiesc cu min, max sau abs.

Exemplu:

Forma general a instruciunii if trece i ea ntr-o alt form ce se execut ntr-un timp mai scurt.

3.10. Concluzii

S-au prezentat cteva prelucrri uzuale ale imaginilor, destinate fie mbuntirii calitii imaginii respective (filtrri, operatori de accentuare a muchiilor), fie extragerii de informaii n scopul recunoaterii formelor (etichetarea, determinarea conturului, calculul diferitor parametri ai obiectelor din imagine). Am descris att avantajele, ct i dezavantajele lor, cteva exemple de utilizare, precum i timpul necesar realizrii acestora de ctre procesorul embedded BF533.

Aplicaiile de urmrire a unui obiect cu anumite caracteristici sunt studiate pentru a fi mai apoi utilizate n numeroase situaii.

Un exemplu clasic provine din aplicaiile de supraveghere. Dac avem o incint cu un sistem de camere video a cror orientare poate fi controlat de la distan, vrem ca n cazul n care un intrus este descoperit, camerele s-i schimbe orientarea astfel c intrusul s rmn mereu n cmpul vizual. n acest caz va trebui s calculm micarea siluetei ntre fiecare dou imagini consecutive.

Exist posibiltatea ca, n anumite situaii, sistemul de recunoatere i urmrire implementat s nu funcioneze corespunztor. Dintre acestea amintim cazul n care obiectele din imaginea captat sunt forme neregulate sau ies din cmpul de vizualizare a camerei. Deasemenea, este necesar ca ariile celor mai mari 3 obiecte din imagine s aib acelai ordin de mrire, iar printre ele s se gseasc i un cerc, pentru a obine rezultatele dorite.

ntruct segmentarea se face dup culoare, este important ca variaia nivelurilor de gri dintr-un obiect s nu fie foarte mare, iar n mediul de utilizare al sistemului, condiiile de iluminare s se menin aproximativ aceleai.

S-au obinut timpi de aproximativ 0.2 secunde pentru procesarea unei imagini, ceea ce duce la prelucrarea a circa 5 cadre pe secund.

CAPITOLUL 4 CALCUL ECONOMIC

Calculul economic reprezint un calcul foarte amnunit privind costul de producie suportat de ntreprinztor pentru producerea i desfacerea unui bun material. n sfera produciei materiale, costul de producie este forma bneasc a unui coninut ce reprezint consumul de mijloace materiale i for de munc, necesare pentru producerea bunurilor.

Realizarea acestui proiect a impus utilizarea platformei de dezvoltare EZ-KIT LITE ADSP BF533, care se gsete, la ora actual pe pia, la un pre aproximativ de 400USD.Accesarea de la un calculator a procesorului embedded este posibil prin intermediul unui emulator JTAG. Acesta poate fi achiziionat contra unei sume de 4000USD.Pentru captarea imaginilor de prelucrat s-a utilizat o camer video in valoare de 100USD, n plus, n cadrul aplicaiei de recunoatere i urmrire fiind necesare i dou servomotoare de tip RC, al cror pre este de 12USD.Astfel, partea hardware necesar dezvoltrii proiectului a costat aproape 4560USD, ceea ce inseamna 13860 RON.

Preul pachetului software necesar implementrii este mai mic decat al prii hardware, pachetul VisualDSP++ costand 1000USD. Acest mediu de dezvoltare poate fi descrcat gratuit de pe site-ul celor de la Analog Devices, ns astfel poate fi utilizat o perioad de timp limitat.

A fost necesara o perioada de documentare de circa 500 de ore. Considerand ca o ora de studiu se plateste cu 5USD, se obtine o suma de plata de 2500USD.Programarea ca form de munc este pltit cu circa 40USD/zi. Aceast sum poate varia de la o firm la alta, n funcie de norma pe care o are programatorul. In cazul de fata, prelucrarile prezentate s-au implementat in aproximativ 50 de zile.

n concluzie, pentru a realiza procesare de imagini ntr-un sistem embedded este nevoie de un capital de aproape 10100USD.Bibliografie

[1]. http://www.generation5.org/content/2002/im01.asp[2]. http://www.actrus.ro/buletin/2_2004/a16.pdf[3]. http://apollo.eed.usv.ro/~remus/arhive/PID/Curs9/Curs_9.pdf[4]. ADSP-BF533 Blackfin Processor Hardware Reference, Revision 3.3, September 2008

[5]. http://docs.blackfin.uclinux.org/doku.php?id=ppi[6].Universitatea Tehnica din Cluj-Napoca, Catedra de Calculatoare, Procesarea Imaginilor Laborator 4: Etichetarea obiectelor din imagini binare.

[7]. VisualDSP++ 4.5 Compiler and Library Manual for Blackfin Processors.[8]. Laurentiu Frangu Recunoasterea Formelor si Prelucrarea Imaginilor, Academica, 2001.[9]. Image Analysis and Image Processing Algorithms for the ADSP-BF5XXAnexevoid erodare_dilatare(void){

/*se prelucreaza imaginea binara im2, in care obiectelor le este asociata valoarea 1, iar fondului 0; dil, er = matrici obtinute in urma aplicarii functiei de dilatare, respectiv erodare; se = elementul structurant */

_dilation(*im2,xx,yy,*se,*dil);

_erosion(*im2,xx,yy,*se,*er);

//pentru observarea rezultatelor, obiectele se fac negre, iar fondul alb

for(i=1;i