Laboratorul 07
Imbunatatirea si restaurarea imaginilor
Prelucrarea imaginilor se poate realiza atat in domeniul spatial, cat si al frecventei.
Imbunatatirea si restaurarea imaginilor in domeniul spatial:
Conversia nivelurilor de gri
Aplicarea unui prag
Imbunatatirea contrastului
Evidentierea caracteristicilor
Prelucrari folosind histograma imaginii
Corectia distorsiunilor geometrice
Eliminarea zgomotului dintr-o imagine
Prelucrarea imaginilor in domeniul frecventei:
Toate aceste prelucrari de imagini sunt acoperite in curs. Din acest motiv, ele nu sunt decat mentionate in suportul de laborator. Pentru detalii teoretice si de implementare, a se vedea cursul.
Framework laborator
Framework-ul de laborator are suport de
file browsing folosind WinAPI.
permite incarcarea unei imagini (format png/jpg/bmp/tga/gif)
salvarea imaginii curente
schimbarea intre procesare pe GPU/CPU
schimbarea efectului procesat
De ce se bazeaza si acest laborator pe shadere? Framework-ul cu shadere este utilizat in principiu numai pentru afisarea pe ecran a imaginii astfel:
Se creeaza un dreptunghi cat fereastra aplicatiei, in spatiu NDC (similar cu laboratorul de RTT)
Se aplica pe el o textura ce reprezinta imaginea curenta
In framgment shader se realizeaza doar calculul culorii, prin esantionarea texturii.
Folosind shadere, se poate realiza prelucrarea imaginii direct in fragment shader, similar cum s-a realizat in laboratorul de RTT postprocesare imagine). In acest caz se prelucreaza pixelii afisati pe ecran, si nu imaginea reala.
Cealalta posibilitate este aceea de a prelucra imaginea reala pe CPU si apoi afisarea ei pe ecran prin shadere.
Salvarea imaginii prin apasarea butonului “Save As” se implementeaza diferit, in functie de optiunea “Shader Based”:
Daca filtrarea s-a realizat pe CPU, atunci ea s-a aplicat direct pe imagine, deci e suficient sa salvam imaginea, folosind biblioteca STB, in fisierul ales de utilizator.
Daca filtrarea s-a realizat in shadere, atunci ea s-a aplicat pe pixelii afisati pe ecran, nu direct pe imagine. Pentru a obtine imaginea prelucrata in shadere, se foloseste functia glReadPixels (care citeste un bloc de pixeli din frame buffer si il salveaza in memoria client), dupa ce fereastra glut a fost redimensionata la rezolutia imaginii initiale.
Filtrele din scheletul de laborator sunt implementate astfel ca fiecare filtrare porneste de la imaginea initiala, imaginea filtrata fiind newImageData.
In laborator sunt implementate in fragment shader filtrele Grayscale (conversia din RGB in grayscale) si Blur. Pe CPU este implementat doar Grayscale. Sunteti incurajati sa implementati Blur-ul si pe CPU si sa incercati cat mai multe din filtrele prezentate la curs (atat pe CPU cat si in shadere).
Cerinte laborator
-
Investigati implementarea GPU / CPU pentru filtrele prezentate
Implementati si alte filtre invatate la curs, atat pe CPU cat si pe GPU
filtru medie (media tuturor pixelilor dintr-o vecinatate)
filtru Gaussian
filtru median