Estimator alfa-beta-gama pentru rezolvarea unei probleme de graniţă [303902]
Cuprins
Capitolul 1 3
1. Introducere 3
1.1. Introducere 3
Capitolul 2 9
2. Detecții. Zgomot 9
2.1. Introducere 9
2.2. Filtrul alfa 12
2.3. Sisteme radar 15
2.4. Aplicații radar în automotive 16
Capitolul 3 22
3. Algoritmi CFAR 22
3.1. Noțiuni introductive 22
3.2. CFAR cu medierea celulelor 23
3.2.1. Determinarea factorului de scalare T 24
3.3. CFAR cu statistică ordonată 26
3.3.1. Determinarea valorii factorului de scalare 27
3.4. [anonimizat] 28
3.4.1. Mediul MATLAB 28
3.4.2. [anonimizat]. Experimente 34
3.5. Imagini 44
Capitolul 4 46
4. Implementarea filtrului pe imagini. Experimente și rezultate 46
4.1. Programul CFAR 46
4.2. Rezultate și concluzii 52
Anexe 53
5.1. Anexa 1 53
5.1.1. Implementarea MATLAB a CFAR unidimensional 53
5.2. Anexa 2 55
5.2.1. Programul CFAR unidimensional pentru experimente 55
5.3. Anexa 3 58
5.3.1. Programul CFAR pentru imagini 58
Bibliografie 7 60
7. Bibliografie 60
Capitolul 1
1. Introducere
1.1. Introducere
Deși la apariția ei electronica analogică era suverană în domeniul tehnicii. Treptat însă electronica analogică a fost detronată de cea digitală. Bazată pe algebra logică (atribuită lui Boole) la început folosea doar porțile logice Treptat însă electronica digitală a câștigat teren fiind în zilele noastre o parte foarte importantă din electronică.
De la electronica de logică combinațională (în acest caz ieșirea circuitului depinde numai de informația adusă la intrări) a apărut și cea combinațională în care ieșirea depinte și de cantitatea de informație "stocată" în timp. [anonimizat], [anonimizat]. Aplicațiile lor nu au întârziat să apară. Următorul pas a fost proiectarea unui chip programabil.
[anonimizat] a [anonimizat] a inceput să se înțeleagă avantajele economice imediate ale utilizării unui singur modul hardware și a mai multor (diverse) programe. Pașii care au urmat au fost inevitabil legați de calculatoarele personale dezvoltate în jurul procesoarelor ([anonimizat]). Prevederea unor sloturi în plăcile de bază ale acestora au făcut utilizarea extrem de facilă a acestora cu module hardware dezvoltate de fabricanții de produse electronice. Tehnologia producerii de procesare a [anonimizat]. În vederea reducerii puterii disipate sub formă de căldură tensiunea de alimentare a acestora a scăzut până la valori de genul 3.3V. Frecvența de operare a procesoarelor a crescut până la valori de ordinul gigahertzilor. [anonimizat] a [anonimizat]. Sisteme ce folosesc procesoare cu patru nuclee și frecvențe de ordinul gigahertzilor sunt folosite curent în zilele noastre.
O direcție importanta de dezvoltare a fost partea de software. Odată cu dezvoltarea calculatoarelor au apărut unele necesități noi. Un exemplu este sistemele de operare. [anonimizat] a calculatorului, o multitudine de drivere menite să asigure o funcționare stabilă a acestuia, tehnologii de tip Plug 'n Play (în care modulele hardware sunt recunoscute de sistemul de operare) și multitasking, etc.
De asemenea au început să apară necesități legate de aplicații ce rulează pe aceste calculatoare. Aplicații de acest gen sunt legate atât de activități specifice (pentru achiții și prelucrare de semnale, imagini, simulări, control, etc.) cât și de activități generale (editare de text, management de proiect, etc.).
A urmat firește transferul de date (fișiere) între calculatoare. Nevoia de a transmite date între calculatoare este una evidentă, de bază. Pentru a asigura acest lucru au apărut rețelele de calculatoare iar mai apoi rețeaua internet. Aceasta a permis accesul la o cantitate imensă de informație într-un timp record dar și contactul rapid între oameni din diverse părți de pe glob. Aceste lucruri au asigurat dezvoltarea unor concepte noi (un exemplu evident este lucrul de acasă ce folosește rețeaua internet).
S-a pus de asemenea problema integrării calculatoarelor în procesele industriale. Într-adevăr, o asemenea creștere a performațelor a impus utilizarea unei puteri de calcul crescânde. Procesele industriale au început să fie controlate tot mai des de către calculatoare. Echipamentele de interfață (atât plăcile electronice cât și magistralele și porturile) s-au perfecționt, s-au diversificat și s-au adaptat cerințelor aplicațiilor. Între acestea se enumeră magistralele PCI, USB și Fire Wire.
Odată cu controlul calculatoarelor au apărut atât module specializate de comunicație pentru dispozitivele controlate (surse de tensiune, osciloscoape, diverse echipamente de testare) dar și standarde de comunicație ce permit controlul de la distanță al acestora. De exemplu, în domeniul manufacturii electronice s-a ajuns la conectarea mașinilor ce participă activ la procesele de producție. Acestea comunică între ele și permit plăcilor să avanseze pe conveioare de la simplu stadiu de placă la placă populată cu componente electronice pe ambele părți, placă testată și mai apoi la produs finit.
Dezvoltarea familiilor de procesoare și a sistemelor de operare a permis crearea unor microcalculatoare destinate unor aplicații care, deși importante, nu necesită o putere de calcul ieșită din comun. Între acestea se enumeră, tabletele, telefoane inteligente, ceasurile inteligente, camerele de luat vederi cu IP, etc.
Rețeaua internet a apărut ca rezultat al gândirii unor vizionari care au înțeles importanța schimbului de informații între calculatoare. O rețea globală de calculatoare a fost propusă prima dată de către Massachussets Institute of Technology (MIT) în anii ’60. De atunci internetul a evoluat pana la stadiul actual. Gândit pentru schimbul de informații, acesta a devenit o unealtă puternică ce presupune conectarea fiecărui domiciliu in zilele noastre. Informațiile schimbate între calculatoare pot fi de orice natură.
Spre exemplu programele de “chat” permit schimbul de informații la nivel de șiruri de caractere între doi sau mai mulți utilizatori. De multe ori însă în locul tastării informației se optează pentru transmiterea de voce (Voice Over IP – VOIP). Programele de chat permit azi și transmiterea de imagini prin internet. Exemple de asemenea programe de chat sunt bine-cunoscutele Yahoo Messenger și Skype.
Un scenariu putin diferit este reprezentat de aplicațiile ce lucrează prin metoda “streaming”. Acestea transmit de obicei informative video. Este posibilă transmiterea de informații video și audio între doi participanți la discuție (așa-numitul video chat). Evident este posibilă și vizionarea de programe de divertisment descărcate de pe website-ul unor posturi de televiziune.
Dar dacă informațiile schimbate între calculatoare ar fi de fapt comenzi? Acest caz nu este essențial diferit față de cazul programelor de chat: în ambele cazuri se trimit șiruri de caractere între cei doi participanți. Dar dacă o asemenea structură de comandă s-ar folosi la controlul unor dispozitive din casă (centrală termică, aer condiționat, rulouri, lumini, etc.). Aplicând principiul comenzilor de la distanță, un nou concept își face apariția in zilele noastre: asa-numitul concept “smart-home”. Acesta permite controlul de la distanță a unor dispozitive electrice (sau electronice) casnice. O variantă posibilă a unui asemenea sistem ar putea folosi de exemplu un termostat construit în jurul unui webserver. La accesarea paginii de web a acestuia, după identificare se poate prescrie temperatura dorită în casă. Astfel, daca pe timpul orelor de lucru aceasta este setata la 16 ℃ (pentru a economisi energie), inainte de plecarea de la serviciu, utilizatorul poate stabili noua valoare a temperaturii la 20 ℃.
Spre exemplu, pentru controlul luminilor se poate folosi așa-numitul Pocket PC. Comenzile se transmit în acest caz prin rețeaua WIFI. Este însă posibilă și utilizarea infrastructurii GSM dezvoltată pentru operatorii de telefonie celulară. În acest caz se poate folosi un telefon și un sistem de codare/decodare. Unul dintre cele mai cunoscute astfel de sisteme îl reprezintă codoarele/decodoarele DTMF.
Una dintre aplicațiile importante din zilele noastre este legată de afișarea și procesarea imaginilor oferite de camerele de luat vederi. Realitatea a demonstrat de nenumărate ori faptul că trăim într-o lume plină de pericole (un exemplu sunt atentatele din New York și cele din Londra). Așadar, una dintre cele mai importante aplicații sunt cele de securitate. Acestea pot detecta chiar armele ascunse vederii.
O altă categorie de aplicații sunt cele de inspecție optică. Acestea sunt folosite mai ales în cazul manufacturilor în electronică pentru detecția unor lipituri imperfecte. Mașinile de inspecție sunt intercalate în lanțul de producție.
O aplicație mai recentă este cea legată de robotică. Este cunoscut faptul că aceștia suferă de probleme de interacțiune cu mediul din cauza senzorilor ce asigură schimbul de informații. Aceste aplicații încearcă să rezolve probleme legate de modelarea mediului în sistemele de control ale acestora. Ele au impus dezvoltarea de algoritmi și tehnici de procesare a imaginilor.
Așa cum s-a menționat mai sus, prin rețeaua internet se pot trimite și imagini. Acestea pot proveni de pe website-ul unui canal de televiziune sau de la alte surse. Una dintre aceste surse este reprezentată de camerele de IP. Aceste dispozitive sunt de fapt serverer de internet care au capabilitatea de a trimite imagini către un solicitant.
Cele de mai sus fiind disponibile, următoarea direcție de dezvoltare a fost cea legata de procesarea informațiilor primite (atât sub fomă de fișiere dar și sub formă de imagini). A fost neceară dezvoltarea de noi algoritmi dar și de trecerea celor existenți în domeniul digital (de exemplu unele legi de reglare existau și până la dezvoltarea calculatoarelor dar forma lor era cea analogică). Unul dintre exemple este cel al legilor de reglare care au trebuit convertite din format analogic, în format numeric. Au apărut astfel sisteme de reglare automată controlate de către procesoare. Aceștia culeg un semnal analogic pe care îl convertesc într-unul numeric și îl proceseză.
Au apărut sisteme de acționare ce primesc la intrare semnale numerice (unui dintre acestea este motorul pas cu pas.
Un alt exemplu este cel al algoritmilor de procesare de imagini. Aceștia sunt actualmente folosiți pentru îmbunatățirea imaginilor, pentru identificarea obiectelor de interes în imagini, pentru urmărirea acestora (în cazul unei secvențe de imagini), etc. Din domeniul procesărilor de semnal și cel al reglării automate s-a născut domeniul numit "Visual Servoing". Acesta este domeniul sistemelor de reglare cu recție după o imagine (sau o succesiune de imagini).
Sistemele video (și algoritmii utilizați) sunt o atracție și pentru domeniul automotive. Aici ele stau la baza realizării unor trăsături de interes larg pentru posesorii de autoturisme. Astfel sunt enumerate facilitățile "Lane Keep Assist", "Emergency Brake Assist", "Bind Spot Detection", etc. Un caz mai nou este cel al sistemelor de vedere pe timp de noapte care detectează pietoni și animale sălbatice. Acestea pot "vedea" la o distanță la care farurile nu ajung ajutând astfel șoferul (imaginile sunt afișate pe un ecran in fața acestuia) să identifice eventualii pietoni dar și animale.
Cum aceste sisteme trebuie să funcționeze în situații variate (ziua, noaptea, în conditii variate de vreme) detecția acestor "evenimente" este importantă. Astfel sistemele pot determina condiții legate de vreme (soare, ploaie, căderea zăpezii, precum și zi, noapte, etc.). De aceea, extragerea informației posibile din zgomot, este extrem de importantă. Pentru acest lucru, se propune utilizarea algoritmului CFAR. Acesta este "împrumutat" din tehnologiile radar, în care zgomotul este prezent în mod constant.
În capitolul al doilea se prezintă funcționarea CFAR în cazul sistemelor radar folosite în automotive. De asemenea este introdus algoritmul. O primă implementare este legată de un semnal (astfel ea va fi și testată). În al doilea caz, acesta este testat pe o imagine plină de zgomot.
Pentru implementarea algoritmului și testarea lui s-a folosit mediul MATLAB. Rezultatele obținute sunt discutate în ultimul capitol al acestui document.
Capitolul 2
2. Detecții. Zgomot
2.1. Introducere
Prin detecție se înțelege identificarea și semnalizarea unei anumite stări a unui sistem. Acesta este considerată importantă pentru funcționarea sistemului.
Pentru detecția anumitor situații, sistemele măsoară variabile de interes(una sau mai multe). De cele mai multe ori acestea sunt sunt comparate cu un nivel numit "de prag" (este important de menționat faptul că pot exista mai multe praguri). Rezultatul comparației se traduce într-o semnalizare sau în luarea unei decizii. De exemplu, dacă temperatura ambiantă este mai mică decât o valoare de prag (sau de referință), sistemul trebuie să oprească instalația d eaer condiționat. Este posibil ca un sistem să aibe două valori de prag pentru o singură acțiune (sistem cu histeresis) sau mai multe valori de prag. Depășirea fiecărui prag poate avea drept consecință o altă acțiune.
De cele mai multe ori, o detecție a unui fenomen este urmărită prin valorile unuia sau mai multor parametri. În cel de al doilea acest caz e posibil ca la detecție să participe mai mulți algoritmi / detectori. Valoarea de interes se calculează periodic (la fiecare semicadru al imaginii sau la câteva semicadre) după cum o cere situația de rezolvat.
Odată calculată, sistemul folosește o euristică proiectată pentru anumite situații limită (valori pe care le va lua variabila de interes). Aceasta va transforma valoarea de interes într-un procent. Pentru luarea unei decizii, valoarea măsurată va fi comparată cu una de prag (figura 2.1). În momentul în care valoarea de prag este depășită, sistemul va semnaliza acest lucru (sau va declara o anumită starea de lucruri).
În cazul considerat în figura 2.1, zgomotul lipsește. În general se consideră ca fiind "zgomot" orice abatere de la valoarea reală a semnalului. Valoarea de măsurat este necunoscută, în caz contrar măsurarea nu are rost. Zgomotul introduce o "eroare" pentru că valoarea măsurată îl include.
Cu toate acestea, și procesul "de măsurare" în sine poate fi însoțit de erori. Astfel este perfect posibil ca rezultatul unei măsurători să fie în afara spectrului de valori măsurate până în acel moment. În mod obișnuit, în măsurătorile manuale, această valoare nu este luată în considerare.
O problemă importantă este detecția de sub zgomot (identificarea valorii semnalului în cazul în care zgomotul există). Zgomotul se poate datora fie componentelor de circuit, fie așa-numitor "poluatori". Aceștia sunt rețelele de telefonie celulară, de TV și radio, dar și intreprinderile industriale, etc. ale căror utilaje de puteri mari care induc tensiuni de zgomot în circuit.
În cazul unui sistem video, zgomotul poate proveni de la chipul responsabil de conversia intensitășii luminoase în semnale electrice. În acest caz, alegerea valorii de prag este importantă. Cazul limită este acela în care pe imagine nu apat nici un fel de muchii și camera își mărește sensibilitatea. Rezultatul este un nivel ridicat de zgmot. Dacă în imagine apare un obiect, camera tinde să-și micșoreze gradual sensibilitatea.
În caz real însă, zgomotul există. În cazul în care condițiile de lucru ale sistemului diferă foarte mult de la o situație la alta (în domeniul automotive, un sistem video lucrează în condiții foarte diferite de luminozitate dar și de vreme), este de cele mai multe ori indicată considerarea zgomotului. Prezența lui poate duce la detecții (și semnalizari) false (figura 2.2). Una dintre cele mai simple metodele folosite pentru eliminarea zgomotului este așa-numitul "histeresis". În acest caz sunt folosite practic două praguri (se poate considera însă un prag central și două valori "delta"). În cazul unui prag central, valorile superioară și inferioară se obțin din cel central prin adaugarea, respectiv scăderea unui interval "delta". Structura poate fi simetrică (diferențele dintre pragul superior și cel central și pragul central și cel inferior sunt egale) sau nu.
Dacă valoarea de intrare se situează sub pragul inferior, ieșire sistemului este pe nivel jos (figura 2.3). Dacă intrarea crește și depășește pragul inferior, sistemul nu comută ieșirea. Ieșirea trece pe nivel superior numai după ce intrarea depășește pragul superior (figura 2.3). Dacă nivelul intrării scade, sistemul trece ieșirea pe nivel jos doar după ce intrarea a scăzut sub pragul inferior (figura 2.3). Astfel, sistemul nu este afectat de zgomot dacă valoarea acestuia este mai mică decât lățimea histeresisului (diferența dintre pragul superior și cel inferior). Modul în care sistemul își schimbă valoare ieșirii este indicat de săgețile din figura 3. O structură simetrică se poate vedea în figura 2.3.
2.2. Filtrul alfa
O altă categorie de zgomot este cel "de măsurare". Cu alte cuvinte, o măsurătoare poate fi afectată de zgomot. Așa cum s-a mai spus, o soluție posibilă este desconsiderarea rezultatului măsurătorii afectate de zgomot. O astfel de situație se poate vedea în figura 2.4. Această soluție se pretează la procesul de măsurare manuală. O altă soluție vizează integrarea în timp pentru eliminarea acestui zgomot. Aceasta se poate utiliza și în cazul unui sistem care execută măsurători în regim automat.
Sunt însă posibile și alte prelucrări (filtrări) ale semnalului. Una dintre acestea elimină / corectează valorile măsurate aflate afară din nivelele de valori în care se situeaza variabila. Pentru asta, valoarea actuală a variabilei de interes se obține ca o sumă ponderată între valoarea citită anterior și cea actuală. Filtrul respectiv mai este cunoscut sub numele de "filtru alfa". Ecuația (1) arată modul în care acesta funcționează.
În ecuația 1, parametrul are valori mici (tipic, 0.1, 0.05, etc.). Variabila x la momentul discret k+1 primește valoarea ponderată formată din valaorea măsurată la momentul k+1 și cea de la momentul k (care intră cu pondere mare).
În acest fel, posibilele valori ieșite din spectrul de valori sunt atenuate cu ajutorul acestui algoritm. Este important de menționat faptul că acesta lucrează ca un filtru trece-jos. Astfel, dacă valorile cresc brusc (și această creștere este normală) începând de la o valoare măsurată, valorile măsurate vor fi integrate în timp. Ca urmare, sistemul nu utilizează informația de frecvență înaltă (acestea sunt desconsiderate ele fiind eliminate de filtrul alfa). Acest lucru se poate vedea în figura 2.5.
Într-adevăr, deși valoarea de măsurat crește brusc sauîn timp scurt (valorile marcate cu cerculețe verzi), informația este trecută prin filtrul alfa. Rezultatul obținut este marcat cu cerculețe cu margine roșie. Se poate vedea cum valoarea trecută prin filtrul alfa crește în timp, relativ încet.Astfel frontul crescător al valorii măsurate se pierde datorită integrării în timp. Dacă acestă informație este sau nu utilă (în acest caz, pierderea ei putând reprezenta o problemă) aceasta depinde de natura sistemului și de procesul urmărit. Este oricum de menționat faptul că sistemul nu face uz de toate informația existentă la nivelul semnalului.
Pentru corecția acestei stări de lucruri se poate utiliza o valoare alfa variabilă (fie continuu fie în câteva trepte). Astfel, dacă diferența dintre valoarea rezultată din ecuația 1 aplicată valorilor semnalului și valorile citite este mai mare decât un anumit prag, valoarea lui alfa poate suferi o corecție.
Un exemplu de situație de acest fel se întâlnește des în domeniul automotive, atunci când vehiculul intră sau iese din tunel, deci luminizitatea imaginii variază mult într-un timp foarte scurt. În astfel de cazuri, integrarea trebuie accelerată iar pentru asta sunt folosite mai multe valori pentru parametrul alfa. Aceste valori pot fi distincte (dinainte stabilite) sau valoarea parametrului alfa poate fi incrementată cu un anumit delta (și acesta fiind dinainte stabilit). Creșterea valorii parametrului alfa mărește ponderea cu care valoarea măsurată la iterația k+1 intră în ecuația 1 iar micșorarea ei o scade. Ca urmare, mărirea valorii lui alfa micșorează timpul de integrare.
Și modul responsabil de modificarea parametrului alfa poate diferi de la aplicație la aplicație. Unul dintre modurile de modificare ale lui alfa ține cont de diferența dintre valoarea măsurată și cea rezultată din aplicarea ecuației filtrului alfa. Astfel, pot exista valori de prag. Dacă toate pragurile sunt depășite, sistemul poate alege cea mai mare valoare pentru alfa. Dacă ultima nu este depașită, se poate alege a doua cea mai mare valoare. Acest raționament se poate aplica pentru toate valorile parametrului alfa.
2.3. Sisteme radar
Sistemele RAdio Detection And Ranging (RADAR) sunt azi folosite pe larg. Acestea folosesc unde electromagnetice emise sub formă de pulsuri. Acestea sunt reflectate de obiecte, unda reflectată fiind numită ecou. Sistemul radar recepționează o fracțiune din unda reflectată. Structural sistemul conține un "emițător" și un "receptor". Semnalul provenit de la receptor este procesat de un al treilea modul iar rezultatul este afișat pe un ecran.
Schema bloc posibilă a unui sistem radar se poate vedea în figura 10. Se poate observa faptul că este folosită o singură antenă care lucrează atât la emisie cât și la recepție. Ca urmare, sistemul emite o undă de putere și pe urma recepționează unde reflectate (antena nu este un dispozitiv bidirecțional).
În figura 2.6 sunt prezentate și câteva module caracteristice sistemelor radar. Schema bloc se compune dintr-un emițător (responsabil de crearea și amplificarea undei de putere ce va fi emisă), un modul duplexor ce permite undei reflectate să treacă spre antena sau undei recepționate să treacă spre receptor și modulele de procesare receptorul și display-ul care afișează rezultatul operatorului uman.
2.4. Aplicații radar în automotive
Radarul este o aplicație bine cunoscută și larg aplicată în domeniul automotive. Așa-numitul Frequency Modulated Continuous Wave (FMCW) utilizat, lucrează între 76-81GHz. Între aplicațiile care utilizează radar se poate menționa Autonomous Emergency Breaking (AEB). Problemele legate de radar includ detecția de sub zgomot.
În acest paragraf este introdus principiul de funcționare al sistemului radarul. De asemenea este explicat pe larg procesul de estimare a distanței până la obiect.
Frecvența semnalului transmis de sistemul radar crește linear, ea acoperind întreaga bandă de frecvență (așa cum se arată în figura 2.7). Timpul în care frecvența acoperă întreaga bandă este notat cu T. Figura 2.7 arată cum va riază în timp frecvența undei emisă de sistemul radar. Semnalul emis mai este cunoscut în literatură sub denumirea de "chirp". În figură se poate vedea și "ecoul" (unda reflectată).
Unda emisă (chirp-ul) se poate scrie matematic ca în ecuația 1.
În ecuația (1) s-au notat:
– – valoare de început a frecvenței,
– – panta de creștere (variație) a frecvenței,
– – faza – considerată a fi constantă.
Din figura 1, panta de creștere a frecvenței se poate scrie așa cum se indică în ecuația (2).
Unda recepționată (marcată cu roșu în figura 1) este descrisă de ecuația 3.
În ecuația (3) s-au notat:
– – valoare de început a frecvenței,
– – panta de creștere (variație) a frecvenței,
– – faza – considerată a fi constantă,
– – timpul dus-întors al undei (cunoscut în literatură sub numele de Round-Trip Delay Time – RTDT),
– – un factor de amortizare asociat pierderilor din canalul de transmisie – aerul.
Așa-numita întârziere, este cauzată de distanța "d" până la obiectul care reflectă unda. Ea este legată de distanța până la obiect de ecuația (4).
În ecuația (4) s-au notat:
– – viteza luminii,
– – distanța până la obiectul ce reflectă unda,
– – timpul dus-întors al undei.
Scopul întregii aplicații este detecția distanței la care se află obiectul. Pentru asta, cele două semnale sunt mixate (înmulțite). Acest lucru este exprimat de ecuația (5).
Se poate observa cu ușurință faptul că ecuația (5) reprezintă o înmulțire a două expresii cosinus. Ecuația (6) arată cum o înmulțire de funcții triconometrice poate fi transformată într-o sumă.
Aplicând ecuația (6) în ecuația (5) se obține rezultatul mixării celor două unde.
Semnalul obținut din mixarea chirp-ului și a ecoului conține un termen de frecvența mare (suma celor două frecvențe) și unul de frecvența mică (diferența celor două frecvențe). Semnalul de interes este cel de frecvență mică (diferența celor două depinde de distanța până la obiect) ca urmare semnalul rezultat din mixare trebuie prelucrat cu un filtru trece-jos. Semnalul rezultat este descris de ecuația (8).
Este important de menționat faptul că produsul are dimensiuni de frecvență. Acet produs este notat așa cum se indică în ecuația (9), produsul fiind numit "frecvență de bătăi" (în literatura de limbă engleză termenul este "beat frequency").
În ecuația (9) s-a introdus valoarea lui din ecuația (2) și valoarea lui din ecuația (4). Așa cum o arată ecuația (9) frecvența de bătăi este direct proporțională cu distanța "d" dintre obiectul detectat și sistemul radar.
Dacă această frecvență este detectată, atunci distanța până la obiectul de interes este dată de ecuația (10).
Frecvența se poate determina din spectrul semnalului. La valoarea apare ca un vârf care trebuie detectat (aceta va fi comparat cu o valoare de prag). Problema este că datorită zgomotului, vor exista multe vârfuri și valoarea de prag optimă este foarte greu de stabilit. Alegerea unei valori de prag în mod eronat poate avea drept consecință frânarea automată a autoturismului deși nu există un obiect cu care acesta ar putea intra în coliziune sau, mai rău, nedetectarea unui obiect real urmat de o coliziune nedorită. Ca urmare, trebuie instrumentată o metodă ce permite selecția acestui vârf și eliminarea celorlalte. Un astfel de spectru se poate vedea în figura 2.9.
Un caz mai complicat este acela în care apar mai multe vârfuri (apariția lor sugerând mai multe obiecte). În acest caz va exista reflexie multiplă înapoi către sistemul radar. Semnalul rezultat se poate obține prin superpoziția ecourilor (a undelor reflectate de aceste obiecte). Astfel mixarea se va face între chirp-ul și suma ecourilor. Matematic, acest lucru este reprezentat de ecuația (11).
În ecuația (11) cele N ecouri sunt notate cu i =1..N și sunt date de ecuația (12).
În cazul mai multor obiecte, spectrul arată ca în figura (12). Puterea semnalului reflectat se poate calcula cu ecuația (13) descrisă în [1]:
În ecuația 13 s-au notat:
– – puterea recepționată,
– – puterea emisă,
– – amplificarea sistemului radar (în limba engleza "gain"
– – aria efectivă,
– – secțiunea transversală (în limba engleza "Radar Cross Section – RCS"),
– – distanța până la obiect
Ecuația (13) arată și câteva lucruri importante. Primul fapt important de remarcat este că puterea recepționată scade foarte mult cu distanța d (de fapt cu puterea a patra a distanței). De asemenea aceasta este serios influențată de secțiunea obiectului urmărit . Aceasta este și o măsură a detectabilității radar a obiectului. Ea este între altele determinată de materialul și de dimensiunea obiectului dar și de polarizarea radiației.
Capitolul 3
3. Algoritmi CFAR
3.1. Noțiuni introductive
Provocarea principală la detecția unui obiect o constituie decizia referitoare dacă un vârf din spectru reprezintă un obiect sau nu. Compararea acestuia cu o valoare de prag fixă este o variantă posibilă pentru o situație ideală și pentru un semnal ideal. În cazul real însă prezența zgomotului, a obiectelor de diferite forme, etc. pot cauza alarme false (caz în care valoarea de prag este stabilită prea jos), respectiv cazuri de în care obiectele nu sunt detectate (caz în care valoarea de prag este stabilită prea sus).
Un algoritm care va oferi adaptarea calorilor de prag după nivelul de zgomot existent este așa-numitul CFAR. Pentru aplicarea acestuia se presupune un zgomot cu medie nulă și distribuție gausiană. Pentru o valoare de prag adaptivă este necesară estimarea puterii zgomotului.
În acest capitol sunt prezentați doi cei mai utilizați algoritmi CFAR. Unul dintre aceștia va fi aplicat și în procesarea de imagini.
3.2. CFAR cu medierea celulelor
În cazul algoritmului CFAR semnalul "este împărțit în zone" numite celule (în cazul imaginilor, o celulă poate fi un pixel sau un grup de pixeli). Primul algoritm prezentat este CFAR cu medierea celulelor (în engleză "cell averaging" – CA). În cazul CA CFAR valoarea de prag pentru fiecare celulă testată este calculat prin medierea valorilor a N celule vecine.
Principiul CA-CFAR este ilustrat în figura 3.1. Medierea pe mai multe celule (de exemplu N) este de fapt estimarea zgomotului oferită de acest algoritm. CA-CFAR folosește N celule a căror valoare este mediată (cu fond gri în figura 3.1). Aceste celule sunt situate în ambele părți ale celulei de test (notate cu "Y" și cu fond verde în figura 3.1). Între celula de test și celulele a căror valoare este mediată se situează "celulele de gardă" (cu fond roșu în figura 3.1). Valoarea mediată se obține cu ecuația (14).
Valoarea Z rezultată din mediere (ecuația 14) este înmulțită cu un factor de scalare T (așa cum se poate vedea în figura 3.1). Ea constituie factorul de prag cu care este comparată valoarea Y. În cazul în care Y este mai mare, sistemul va semnaliza un obiect. În caz contrar, sistemul va conclude că nu există un obiect.
3.2.1. Determinarea factorului de scalare T
Așa cum se poate vedea în figura 3.1, valoarea medie a celor N celule este înmulțită cu un factor de scalare notat cu T. Rezultatul formează valoarea de prag pentru celula Y. Dacă valoarea celulei este peste cea de prag, atunci Y reprezintă un vârf, deci un obiect. Este important de meționat faptul că acest lucru se petrece în spectrul semnalului rezultat din mixarea chirp-ului cu ecoul.
O intrebare validă este legată de valoarea factorului de scalare. O valoare potrivită asigura o detecție bună (cu procent mare de detecție și procent mic de alarme false). Pentru o valoarea acceptată a probabilității de alarme false (notată cu ) și o valoare N fixă se determină valoarea constantă a factorului de scalare. De aceea, este necesară evaluarea modificărilor în funcția de densitate a probabilității apărute în urma medierii. Primul pas în calcularea mediei este suma celor N valori. Dacă densitățile de probabilitate a două variabile aleatoare independente X1 și X2 sunt insumate atunci densitatea de probabilitate a sumei se scrie ca o convoluție a densităților de probabilitate a celor două variabile aleatoare
Pentru valori (în fereastra de referință) distribuite exponențial cu valori cu deviație standard densitatea de probabilitate este dată de ecuația (15).
Acest raționament se poate extinde relativ ușor la însumarea a N valori. În final probabilitate de alermă falsă este dată de ecuația (16).
După stabilirea unor valori pentru N și pentru se poate determina valoarea factorului de scalare T. Este important de menționat faptul că T poate fi calculat separat (offline).
Prin înmulțirea cu T, valoarea medie se transformă într-o valoare de prag adaptivă care va garanta probabilitatea de alarmă falsă agreată . Este important de menționat faptul că procedura de detecție pentru CA-CFAR nu este proiectată pentru detecția de obiecte multiple.
3.3. CFAR cu statistică ordonată
CA-CFAR selectează N celule a căror valori sunt mediate. SO-CFAR lucrează diferit deși există o similaritate remarcabilă cu CA-CFAR. Acesta selectând o singură amplitudine. Funcționarea acestui algorithm este reprezentată în figura 3.2.
Așa cum se poate remarca în figura 3.2 și aici este vorba de un număr N de celule (marcate cu gri în figura 3.2), câteva celule de gardă (marcate cu roșu în figura 3.2) și celula de test (marcată cu verde în figura 3.2).
Ideea pe care se bazează funcționarea SO-CFAR este aceea că estimarea zgomotului se face pe baza a k nivele ale celulellor de referință (marcate cu gri în figura 3.2) sortate crescător. Acest lucru se poate vedea în ecuația (17).
În acest fel, dacă există încă un obiect în fereastra de referință formată în figura 3.2, valoarea acestuia nu este afectată. Media aritmetică utilizată de CA-CFAR este așadar înlocuită de o singură valoare obținută dintr-o statistică ordonată. La fel ca și în cazul CA-CFAR, această valoare este multiplicată cu o valoare de scalare notată cu "TSO". Valoarea obținută constituie valoarea de prag cu care este comparată valoarea celulei Y. Dacă valoarea celulei de test este mai mare decât cea de prag, sistemul va semnaliza un obiect. În caz contrar, sistemul va concluziona că nu există un obiect.
3.3.1. Determinarea valorii factorului de scalare
Ca și în cazul CA-CFAR și în acest caz factorul de scalare "TSO" trebuie determinat. Înainte de asta, este necesară stabilirea valorii parametrului "k" care reprezintă rangul considerat. Așa cum se arată în [2], o valoare de trei sferturi din N este o opțiune rezonabilă pentru valoarea lui "k". Așa cum se arată în [3] factorul de scalare se poate calcula cu ecuația (18).
3.4. Implementarea CA-CFAR in MATLAB
Malebari et al [4], au comparat metodele "square low", "CA-CFAR", "OS-CFAR" în vreme ce Estivil-Castro [5] este preocupat de posibila utilizare a acestor algoritmi pentru sortare.
În acest proiect unul dintre algoritmi va fi aplicat pe imagini. Pentru acest lucru s-a ales CA-CFAR.
Chiar în cazul în care reprezintă o scenă statică, imaginile posedă zgomot. Acest lucru se datorează chip-ului care face achiziția de imagine. Există însă cazuri în care datorită faptului că nu există obiecte în imagine, camera își mărește sensibilitatea, mărind zgomotul din imagine. Dacă imaginea este alb-negru (fără detalii de culoare) atunci efectul este și mai pronunțat. Acest zgomot poate fi filtrat afară cu algoritmi de tipul CFAR.
3.4.1. Mediul MATLAB
Odată decisă utilizarea CFAR, a fost necesară o implementare simplă care poate da rezultate imediat spre validarea sau nu a acestora. Pentru ca acest lucru să se întâmple, a fost ales pentru implementare și testare mediul MATLAB. Un astfel de filtru a fost implementat în MATLAB.
Fiind orientat pe lucrul cu vectori / matrici, acest mediu de programare oferă avantajul unei implementări relativ ușoare și relativ directe (în special datorită suportului oferit de mediu – acesta posedă multe subrutine și funcții care pot fi chemate imediat de către utilizator în programele sale).
Ultimele versiuni de MATLAB oferă mult mai mult suport decât "surorile" lor anterioare. Astfel utilizatorul are la dispoziție mai multe "toolbox-uri" de unde poate alege funcțiile sau subrutinele dorite. Pachetul oferă și exemple de implementare, astfel că utilizatorul pășește în lumea MATLAB mai încrezător în șansele de reușită.
În MATLAB se poate lucră fie scriind comenzi de la tastatură, fie grupând aceste comenzi într-un fișier (care mai apoi este lansat în execuție). Comenzile se scriu în fereastra intitulată "Command Window" și sunt executate fiecare după apăsarea tastei "Enter". Acesta este modul de lucru "de commandă". Dar MATLAB lucrează și cu programe conținute în fișiere. Acestea au extensia ".m", fiind specifice MATLAB.
Un program MATLAB poate fi scris sub forma fișierelor script sau a fișierelor "function". Primul este un fișier extern care conține o secvență de comenzi MATLAB. După execuția completă a lui, variabilele create de acest tip de fișier rămân în zona de memorie a aplicației. Dacă prima linie a fișierului conține cuvântul “function" fișierul respectiv este un fișier de tip "funcție", care se caracterizează prin faptul că poate lucra cu argumente. La terminarea execuției unei funcții, în memoria calculatorului nu rămân decât variabilele de ieșire ale acesteia.
La lansarea în execuție a MATLAB, se deschide interfața grafică utilizator a acestuia (figura 3.3). Se pot vedea câteva ferestre: "Command Window", fereastra "Workspace" (partea din dreapta) fereastra de editare (în care este scris programul), și fereastra "Current Folder" (în stânga figurii) care arată conținutul directorului în care se lucrează. Meniul MATLAB poate fi restrâns sau nu după dorința utilizatorului prin apăsarea butonului de sub cel de inchidere (în dreapta figurii). MATLAB poate afișa atât grafice cât și figuri (de exemplu poate afișa o poză) bidimensionale sau tridimensionale.
Selecția unei comenzi din bara de comenzi sau meniul principal se poate face cu mouse-ul sau cu ajutorul săgeților, prin deplasarea zonelor active sau prin tastarea literei marcate în fiecare subcomandă.
Selecția unei comenzi din bara de comenzi sau meniul principal se poate face cu mouse-ul sau cu ajutorul săgeților, prin deplasarea zonelor active MATLAB-ul lucrează cu două tipuri de ferestre: o fereastră de comenzi și una de reprezentări grafice.
La un moment dat poate fi deschisă numai o fereastră de comenzi. Fereastra grafică este utilizată în reprezentarea grafică a datelor. Pot fi deschise mai multe ferestre grafice în același timp.
Implicit, mediul de programare MATLAB este sensibil la tipul de litere (mari sau mici), dar există comenzi care fac trecerea între modurile sensibil și nesensibil. Numele de funcție este obligatoriu să fie scris cu litere mici. Liniile de comentariu dintr-un fișier script / funcție sunt precedate de caracterul %. Pentru a primi ajutor se tastează help pentru meniul întreg sau help urmat de denumirea funcției sau fișierului ".m". De exemplu, pentru a obține ajutor pentru funcția "fft" utilizatorul va scrie în fereastra de comenzi instrucțiunea:
>>help fft
Este important de menționat faptul că numărul de cifre zecimale în care sunt afișate diverse variabile nu reprezintă precizia în care sunt efectuate calculele. Pentru a schimba formatul afișat se tastează "format short e" pentru 5 cifre zecimale, "format long e" pentru 15 cifre zecimale și "format bank" pentru plasarea a două cifre zecimale la dreapta punctului zecimal.
Utilizatorul poate naviga prin structura de fișiere utilizând comenzi de tip DOS. Astfel instrucțiunea "cd" apelează directorul curent. Comanda "dir" listează fișierele din directorul curent iar "dir numedirector" listează fișierele din directorul “numedirector”. Utilizatorul are la dispoziție și comenzi legate de spațiul de lucru MATLAB. Astfel comenzile "who" și "whos" oferă numele variabilelor ce au fost definite în spațiul de lucru. Instrucțiunea "what" listează fișierele ".M", ".MAT" și ".MEX" din directorul curent.
Fișierele (scripturile) pot fi privite ca macro-uri ale comenzilor MATLAB. Succesiunile de instrucțiuni grupate în fișiere sunt salvate cu extensia ".M", mai precis "numefisier.M". Este posibil ca un fișier MATLAB să fie o funcție cu variabile de intrare și ieșire sau o listă de comenzi. Pachetul cere ca fișierele ".M" să fie salvate într-un director care este fie cel de lucru sau fie este specificat în lista căilor din MATLAB. Pentru a putea executa fișierul ".M" dintr-un anumit director, acesta trebuie adăugat în lista de căi MATLAB.
Fișierele ".M" pot utiliza variabile definite de utilizator, variabile definite cu comanda input. De exemplu, dacă se dorește rularea unui fișier MATLAB pentru diferite valori ale unei variabile N, atunci, în fișierul M se poate utiliza următoarea comandă:
N=input(‘N=’).
MATLAB este un pachet de programe care lucrează numai cu un singur tip de obiecte, matrice numerice rectangulare, cu elemente reale sau complexe. În acest sens scalarii sunt asimilați matricelor cu o linie și o coloană (1 × 1), iar vectorii sunt asimilați matricelor cu o linie (1 × n) sau o coloană (n × 1). Operarea cu matrici oferă din start un suport considerabil pentru activități de genul procesării de imagini (întrucât imaginile sunt de fapt matrici de pixeli care obțin valori la transformarea intensității luminoase a scenei în semnal electric).
Introducerea matricelor în mediul de lucru se face prin una din metodele:
– introducerea explicită;
– generarea prin instrucțiuni și funcții;
– crearea de fișiere M;
– încărcarea din fișiere de date externe.
Cea mai simplă metodă constă în utilizarea unei liste explicite. Trebuie respectate următoarele reguli:
– elementele unei linii trebuie separate prin spații libere sau virgulă;
– liniile se separă prin punct-virgulă ”;”;
– elementele matricei sunt cuprinse între paranteze drepte “[]”.
Elementele matricelor pot fi numere reale, complexe sau orice altă variabilă MATLAB. Elementele unei matrice A pot fi identificate, prin notația A(i,j) semnificația fiind elementul de la intersecția liniei i cu coloana j. Ca urmare, pentru a face referire la un element al matricei sunt necesari doi indici. Referirea la un element al unui vector se utiliza un singur indice.
Se remarcă faptul că dacă se atribuie o valoare unui element care ocupă o poziție în afara dimensiunii maxime a unei matrice sau unui vector, dimensiunea acesteia/acestuia este mărită automat până la valoarea indicelui noului element, iar elementele nedefinite sunt setate la valoarea zero. Este posibilă și obținerea informațiilor relative la matrici. Astfel, comanda "size(A)" returnează dimensiunea matricii A.
MATLAB permite și definirea mai multor matrici particulare:
– matricea vidă A=[ ]
– matricea nulă de ordin n × m : A= zeros(n,m)
– matricea unitară de ordin n × m : A= ones(n,m)
– matricea cu diagonală 1, de ordin n × n A= eye(n)
MATLAB permite definirea vectorilor în două moduri:
– prin introducerea explicită a componentelor vectorului;
– prin crearea lor de exemplu crearea unui vector cu elemente egal spațiate se face prin comanda "k=amin:pas:amax". În această comandă s-au notat cu "amin" este valoarea primului element din vector, cu "pas" este valoarea incrementului și cu "amax" limita până la care pot lua valori componentele vectorului. În cazul în care incrementul lipsește, MATLAB îi atribuie valoarea implicită 1.
Ca și în cazul matricilor, și în cazul vectorilor utilizatorul poate obține informații referitoare la aceștia. Astfel, comanda "length(v)" returnează lungimea vectorului v.
Considerând "X" și "Y" două matrici se menționează următoarele operații:
– adunarea și scăderea, definite pentru cazul în care dimensiunile matricei "X" sunt egale cu dimensiunile matricei "Y":
Z=X+Y
Z=X-Y
– înmulțirea, definită atunci când "X" are dimensiunile (m × n) iar Y (n × p)
Z=X*Y
– împărțirea la dreapta, definită atunci când "X" are dimensiunile (n × n) iar Y (n × n)
Z=X/Y
și este identică cu X*Y-1 (Y-1 este inversa matricii Y).
– înmulțirea element cu element (între componentele a două matrice de aceleași dimensiuni)
Z=X.*Y
– împărțirea la stânga
Z=X\Y
este identică cu X-1*Y (X-1 este inversa matricii X).
– ridicarea la putere
Z=X^p
reprezintă ridicarea la puterea p a matricei X. Expresia X^p are sens numai pentru matrice pătratice iar p este un scalar.
– ridicarea la putere a elementelor unui vector/matrice
Z=X.^p
– ridicarea la puterea elementelor unui vector/matrice a unui scalar
Z=p.^X
– transpunerea
Z=X’
Acest lucru face ca pentru o matrice cu dimensiunea n × m să se obțină o matrice Z cu dimensiunea m × n.
3.4.2. Implementarea CA-CFAR unidimensională. Experimente
Pentru testare, CA-CFAR a fost implementat în MATLAB. Un semnal de zgomot a fost generat iar câteva valori au fost modificate intentionat (acestea au format vârfurile ce se doreau a fi detectate). Semnalul astfel modificat a fost aplicat filtrului CFAR.
Semnalul de procesat se poate vedea în figura 3.4.
Rezultatul procesării se poate vedea în figura 3.5.
În figura 3.4 se poate vedea semnalul care conține și zgomot. Valorile iterațiilor 100, 300 și 700 au fost modificate. Acestea reprezintă obstacolele de dorit a fi detectate. Acest semnal va fi trimis la algoritmul CFAR. Rezultatul aplicării acestuia se poate vedea în figura 3.4. Algoritmul CFAR calculează valori de prag. Acestea sunt reprezentate cu culoare roșie în figura 3.4.
Așa cum se poate observa, diferențele între vârfuri și valorile de prag sunt mari. Acest lucru înseamnă că CFAR permite detecția vârfurilor mai mici (reprezentate de obiecte mai depărtate). Pentru a evidenția acest lucru, valorile iterațiilor 100, 300 și 700 vor fi modificate la 4, 5, 6. Semnalul de procesat se poate vedea în figura 3.6. Vârful de la iterația 100 poate fi ușor interpretat ca fiind zgomot.
Semnalul din figura 3.6 este aplicat algoritmului CFAR unidimensional. Rezultatul se poate vedea în figura 3.7. Se poate observa faptul că CFAR calculează și plasează valorile de prag sub vârfurile de interes. Acest lucru arată că și în cazul acestui semnal, CFAR detectează vârfurile de interes.
Un ultim experiment va reduce și mai mult valorile iterațiilor 100, 300 și 700 pentru a vedea cum reducerea lor va afecta performanțele filtrului CFAR. Astfel semnalul va obține valoarea 3 la iterația 100, 4 la iterația 300 și 5 la iterația 700.
Cu aceste valori semnalul de procesat se poate vedea în figura 3.8.
În figura 3.7, valoarea iterației 100 poate fi considerată ca zgomot deși aceasta este de dorit ca să fie detectată. Valoarea semnalului la iterația 530 (aproximativ) este însă valoare de zgomot. Este interesant de remarcat faptul că aceasta va fi selectată de către CFAR (figura 3.8).
Pentru a vedea mai bine dacă vârful de la iterația 100 a fost sau nu detectat, figura 3.8 se va extinde pe orizontală. În figura 3.9 se poate observa faptul că toate vârfurile sunt detectate. Dar, la iterațiile 530 (aproximativ) și respectiv 870 (valoare aproximativă), CFAR detectează vârfurile (care de data asta sunt zgomot). Ca urmare, cu cât valorile sunt mai aproape de zgomot, cu atât va crește procentul de alarme false.
Utilizând valorile de prag calculate de CFAR, este posibilă binarizarea semnalului. Altfel spus, valorile care depășesc pragurile pot obține o valoare determinată (de exemplu valoarea celui mai mare vârf) iar valorile care se situează sub praguri pot fi reduse la zero.
Este interesant de remarcat faptul că filtrul CFAR nu a fost modificat. Într-adevăr în cazurile de mai sus a fost modificat doar semnalul. Prima dat se va încerca modificarea numărului de celule de gardă de la trei la cinci. Rezultatele obținute cu acest nou filtru CFAR vor fi comparate cu cele din figura 3.9.
Pentru ca rezultatele să fie interpretabile, este necesar ca filtrul original și cel modificat să fie aplicate pe același semnal. Acest lucru se va face prin implementarea mai multor filtre în același program. Prima data va varia lățimea ferestrei.
Pentru o lățime a ferestrei de 6 rezultatul aplicării filtrului se poate vedea în figura 3.11. Pentru o ferastră cu lațimea de 8 rezultatul se poate vedea în figura 3.12.
Pentru o fereastră cu lățimea de 14 rezultatul se poate vedea în figura 3.13 iar pentru o lățime de 16 în figura 3.14.
Se poate observa faptul că performanțele filtrului nu se modifică prin creșterea lățimii ferestrei. Dar lățimea intervalului în care pragurile obțin valori scade. Cu alte cuvinte, adăugare mai multor celule reduce variațiile nivelelor de prag (ceea ce era de asteptat, acesta fiind efectul medierii).
În următorul experiment va varia lățimea celulei de gardă în vreme ce lățimea celulei de referință va rămâne constantă. Semnalul pe care a fost aplicat filtrul cu variația celulei de gardă se poate vedea în figura 3.15.
Rezultatul pentru o lățime a celulei de gardă de 1 se poate vedea în figura 3.16. Pentru o lățime a celulei de gardă de 5 se poate vedea în figura 3.17.
Pentru o lățime de gardă de 9, rezultatul se poate vedea în figura 3.17.
Pentru o lățime de 13, rezultatul se poate vedea în figura 3.19. Pentru o lățime a celulei de gardă de 17 rezultatul se poate vedea în figura 3.20.
Se poate observa faptul că modificarea lățimii celulei de gardă nu afectează vizibil performanțele filtrului CFAR. În cele mai multe cazuri vârful de la iterația 100 (care este în intervalul de zgomot) nu este detectat.
Programul aplicat pentru acest studiu se poate vedea în anexa 2.
3.5. Imagini
Așa cum a fost arătat mai sus, un semnal are o singură dimensiune. CFAR îl împarte pe "celule" pentru prelucrare. În ceea ce privește imaginile, acestea pot fi alb-negru sau color. În ambele cazuri informația se scrie în matrici (bidimensionale). În cazul celor color, există trei matrici (ansamblul putând fi considerat un tensor). În cazul imaginilor alb-negru, valorile matricii sunt valorile (de luminanță ale) pixelilor. Privind pixelii din contextul CFAR, aceștia vor constitui "celulele".
O altă categorie de imagine este cea produsă de camerele capabile să sesizeze căldură (camere termice). Această categorie de camere, este deosebit de utilă noaptea (sau în condiții în care luminozitatea este redusă). În domeniul automotive, un sistem rezultat din aplicarea algoritmilor de recunoaștere de forme cu o asemenea cameră poate recunoaște oameni și animale de la o distanță la care farurile nu ajung, informând astfel șoferul despre existența și mișcarea lor. Rezultatul produs de aceste camere este o imagine alb-negru. În aceste imagini, cu cât obiectul este mai cald, cu atât produce o imagine mai luminoasă.
În cazul imaginilor, sursele de "zgomot" sunt multiple. De la chipul care transformă imaginile scenei în semnal electric, la condițiile de vreme în care lucrează camera (soare, ceață, ninsoare, polaie, etc.) și la condițiile de luminozitate (zi, noapte). Atât sistemul videocât și camera lucrează pentru asigurarea unuor procente de detecție și alarme false cât mai bune.
Una dintre imaginile cu zgomot se poate vedea în figura 3.10. În imaginea plină de zgomot (acesta se datorează sensibilității crescute a camerei care a variat în lipsa unui semnal util din cauza zgomotului) se poate observa un far al unui autoturism care se apropie. Facând analogie cu spectrul semnalului în cazul semnalului radar acest punct luminos este "vârful" care ar trebui detectat în imagine (procedura fiind similară cu cea din cazul semnalului). Pentru detecție, se va aplica algoritmul CFAR, rezultatul fiind prezentat în cele ce urmează.
Capitolul 4
4. Implementarea filtrului pe imagini. Experimente și rezultate
4.1. Programul CFAR
În paragraful anterior s-a arătat că filtrul CFAR poate permite detecția unui vârf în condiții de zgomot cu ajutorul unor valori de prag flotante (ajustabile) după nivelul de zgomot. De asemenea a fost arătată una dintre situațiile în care filtrarea afară a zgomotului este imperios necesară. Și în acest caz se va utiliza filtru CFAR. Și aici este posibilă binarizarea imaginii după utilizarea acestui filtru.
Ca și în experimentul anterior, filtrul a fost implementat in MATLAB. Codul se poate vedea în Anexa 3. Imaginea de test o constituie cea din figura 3.10. Parametri filtrului sunt:
– o lățime a ferestrei de 6, 10, 14 și 18 pixeli,
– o lățime a ferestrei de gardă de 1, 3, 5, 7, 9 pixeli,
Vârful de detectat din imaginea originală se poate vedea în figura 4.1.
Pentru primul experiment, fereastra de gardă a fost fixă, ea având lățimea de 5 pixeli.
Pentru o lățime a ferestrei de 6 rezultatul aplicării filtrului CFAR se poate vedea în figura 4.2.
Vârful detectat din imaginea originală se poate vedea în figura 4.3. După cum se poate vedea în părțile laterale vârfului de detectat apar încă două vârfuri.
Acestea însă nu apar în imaginea inițială.
Lățimea ferestrei va fi acum modificată la 10 pixeli și codul filtrului va fi rulat încă odată. Rezultatul procesării se poate vedea în figura 4.4. Cele două vârfuri laterale apar și de această dată în imaginea care rezultă din procesare. Cu toate acestea se poate observa că, pe măsură ce lățimea ferestrei crește, cele două vârfuri laterale din figura 4.2 apar din ce în ce mai șterse.
Rezultatul obținut prin aplicarea filtrului CFAR cu lățimea ferestrei de 14 pixeli se poate vedea în figura 4.5. Ultima valoare a lățimii ferestrei este 18. Rezultatele aplicării filtrului CFAR cu această valoare a lățimii ferestrei se poate vedea în figura 4.6. Cele două vârfuri laterale abia dacă se mai văd aici.
Cel de al doilea experiment presupune aplicarea filtrului cu diferite valori ale ferestrei de gardă. Lățimea ferestrei va fi fixă la 12 pixeli.
4.2. Rezultate și concluzii
Experimentele de mai sus arată capabilitatea algoritmului CFAR de a elimina zgomotul din imagini. Faptul că filtrul lucrează era de așteptat din moment ce acesta este utilizat în domeniul radar din automotive.
Rezultatele de mai sus arată faptul că acest algoritm oferă rezultate bune și pe imagini. Într-adevăr dacă după aplicarea filtrului este setată o valoare de prag la jumătate din valoarea acestui vărf, imaginea va fi binarizată și zgomotul va fi complet eliminat.
Filtrul implementat a fost de tipul CA-CFAR. Acesta lucrează folosind proprietatea de eliminare a zgomotului prin mediere a valorilor semnalului.
Anexe
5.1. Anexa 1
5.1.1. Implementarea MATLAB a CFAR unidimensional
clear all;
close all;
% creaza un semnal de zgomot
s=randn(1000,1);
% modifica cateva valori ce vo constitui varfurile de detectat
s([100, 300, 700])=[30 40 35];
% pune pe o figura semnalul creat
figure,plot(s);
% stabileste parametri CFAR
% latimea ferestrei de referinta
refLength=12;
% latimea celulei de garda
guardLength=3;
offset=3;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
5.2. Anexa 2
5.2.1. Programul CFAR unidimensional pentru experimente
clear all;
close all;
% creaza un semnal de zgomot
s=randn(1000,1);
% modifica cateva valori ce vo constitui varfurile de detectat
s([100, 300, 700])=[3 4 5];
% pune pe o figura semnalul creat
figure,plot(s);
% stabileste parametri CFAR
% latimea ferestrei de referinta
refLength=12;
% latimea celulei de garda
guardLength=1;
offset=3;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
title('guardLength = 1, refLength = 12')
% modifica guardLength si refLength
guardLength = 5;
refLength=12;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
title('guardLength = 5, refLength = 12')
% modifica guardLength si refLength
guardLength = 9;
refLength=12;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
title('guardLength = 9, refLength = 12')
% modifica guardLength si refLength
guardLength = 13;
refLength=12;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
title('guardLength = 13, refLength = 12')
% modifica guardLength si refLength
guardLength = 7;
refLength=12;
% aplica CFAR
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(s,cfarWin,'same');
cfarThreshold=noiseLevel+offset;
% afiseaza rezultatul in figura
figure,plot(s);
hold on,plot(cfarThreshold,'r–','LineWidth',2)
legend('Signal','CFAR Threshold')
title('guardLength = 17, refLength = 12')
5.3. Anexa 3
5.3.1. Programul CFAR pentru imagini
clear all;
close all;
I = imread('D:\rares\MatlabGaussianNoiseCFAR\noise_image.png');
%I = imread('C:\DMS_ICMS\Pics\testScaun.png');
J = rgb2gray(I);
%H = histeq(J);
%J = H;
figure;
imshow(J);
title('Initial Image');
%imtool(J);
refLength=6;
guardLength=5;
offset=12;
[r, c] = size(J)
vect = zeros(1, c);
result = zeros(1, c);
for j = 1:r
for i = 1:c
vect(1, i) = J(j, i);
end
cfarWin=ones((refLength+guardLength)*2+1,1);
cfarWin(refLength+1:refLength+1+2*guardLength)=0;
cfarWin=cfarWin/sum(cfarWin);
noiseLevel=conv(vect,cfarWin,'same');
cfarThreshold = noiseLevel + offset;
for i = 1:c
J(j, i) = abs(cfarThreshold(1, i) – vect(1, i));
end
end
figure;
imshow(J);
title('Processed Image; refLength = 6');
imtool(J);
Bibliografie 7
7. Bibliografie
Samual Blackman and Robert Popoli, “Sensor and Source Chararcteristics”, in Design and Analysis of Modern Tracking Systems, Artech House, 1999,
M. Habib, M. Barkat, B. Aïssa, and T. Denidni, “CA-CFAR detection performance of radar targets embedded in non centered chi-2 gamma clutter,” English, Progress in Electromagnetics Research, pp. 135–148, 2008,
M. A. Richards, Fundamentals of radar signal processing. New York: McGraw-Hill, 2014, isbn: 978-0-0717-9832-7.
A. Melebari, A. K. Mishra, and M. Y. A. Gaffar, “Comparison of square law, linear and bessel detectors for CA and OS-CFAR algorithms,” in Proc. of the 2015 IEEE Radar Conference, Oct. 2015, pp. 383–388,
Estivil-Castro, V., Wood, D., "A survey of adapting sorting algorithms" Journal ACM Computing Surveys (CSUR) Surveys Homepage archive, Volume 24 Issue 4, Dec. 1992 Pages 441-476 ACM New York, NY, USA,
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Estimator alfa-beta-gama pentru rezolvarea unei probleme de graniţă [303902] (ID: 303902)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
