Operațiile de restaurare și îmbunătățire a imaginilor pot fi efectuate:
Reprezintă reconstruirea imaginii fără defectele introduse de sistemul de achizitie sau operația de achiziție, cunoscând natura defectelor (modelul matematic al defectelor).
Operații tipice:
Creșterea calității imaginii în scopul interpretării sale vizuale sau al extragerii caracteristicilor din imagine.
Operații tipice:
Are drept scop reducerea zgomotului din imagini sau evidențierea anumitor caracteristici prin procesarea reprezentării imaginii în domeniul spațial. Există mai multe tipuri de filtre spațiale:
Este un filtru spațial ordonat, care înlătură zgomotele dintr-o imagine fără a atenua punctele de frontieră (tranziții bruște de intensitate). Pentru fiecare pixel al imaginii, valoarea pixelului curent este înlocuită cu valoarea pixelului din mijlocul vectorului sortat crescător, format din pixelii din vecinătatea acestuia.
Filtrul median reduce variația intensităților din imagine, producând regiuni de intensitate constantă sau aproape constantă. Forma regiunilor depinde însă de geometria ferestrei de filtrare; acest lucru reprezintă un dezavantaj, deoarece sunt introduse în imaginea filtrată regiuni care nu existau în imaginea inițială. În general, fereastra de filtrare se alege de dimensiuni mici pentru a evita efortul de sortare a vectorilor. De obicei, forma ferestrei se bazează pe cunoașterea caracteristicilor de zgomot din imagine. Fereastra poate fi pătrat, dreptunghi (orizontal sau vertical) sau cruce.
Filtrul median netezește oscilațiile de intensitate cu o perioadă mai mică decât lățimea ferestrei. Mai mult, modifică valoarea medie a intensităților din imagine dacă distribuția spațială a zgomotului nu este simetrică în imaginea inițială. Filtrul conservă anumite forme de frontiere și nu generează niveluri noi de gri.
Algoritmul Huang
pentru fiecare rând al imaginii: pentru prima fereastră de pe rând: calculează histograma în vectorul h construiește și sortează vectorul intensităților pixelilor din fereastră determină valoarea mediană imed pentru celelalte ferestre de pe rând: actualizează histograma: scăzând contribuțiile pixelilor de pe coloana din stânga ferestrei adăugând contribuțiile pixelilor de pe ultima coloană a ferestrei actualizează imed prin incrementare/decrementare astfel încât suma valorilor de pe primele imed poziții din vectorul h să fie egal cu jumătate din numărul de pixeli din fereastră
Calculul iterativ al valorii mediane bit cu bit
Pentru fiecare fereastră se construiește vectorul nesortat al intensităților pixelilor. Fiecare valoare din vector se reprezintă în format binar. Se determină bitul valoare medie de pe poziția cea mai semnificativă din vector. Acesta va fi bitul cel mai semnificativ al valorii mediane. Se continuă procesul de alegere a bitului valoare medie de pe fiecare poziție din reprezentarea binară a intensităților. Numărul astfel obținut va reprezenta noua valoare a pixelului.
De ce se bazează și acest laborator pe shadere? Framework-ul cu shadere este utilizat în principiu numai pentru afișarea pe ecran a imaginii astfel:
Folosind shadere, se poate realiza prelucrarea imaginii direct în fragment shader. În acest caz se prelucrează pixelii afișați pe ecran, și nu imaginea reală. Cealaltă posibilitate este aceea de a prelucra imaginea reală pe CPU și apoi afișarea ei pe ecran prin shadere.
Salvarea imaginii prin apăsarea butonului “Save As” se implementează diferit, în funcție de opțiunea “Shader Based”:
Filtrele din scheletul de laborator sunt implementate astfel încât fiecare filtrare să pornească de la imaginea inițială, imaginea filtrată fiind newImageData.
vec2 texelSize = 1.0f / screenSize; texture(textureImage, textureCoord + vec2(i, j) * texelSize);
Ce este un texel? Unitatea fundamentală dintr-o textură. Cum coordonatele de textură sunt în intervalul [0, 1], iar pozele pot avea rezoluții diferite, este necesar ca mai întâi să se calculeze dimensiunea unui texel.