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
      • Imbunatatirea contrastului prin egalizarea histogramei
  • Corectia distorsiunilor geometrice
  • Eliminarea zgomotului dintr-o imagine
    • Filtre spatiale
      • Filtre de mediere
        • Filtrul trece-jos (de netezire)
          • Filtrul medie
        • Filtrul trece-sus
        • Filtrul Gaussian
      • Filtre ordonate (filtre rang)
      • Filtre adaptive

Prelucrarea imaginilor in domeniul frecventei:

  • Se bazeaza pe transformata Fourier a imaginii.
  • O filtrarea a imaginii in domeniul Fourier inseamna eliminarea anumitor frecvente din transformata Fourier a imaginii si presupune
    • Calculul transformatei Fourier a imaginii
    • Aplicarea unui filtru
    • Calculul transformatei Fourier inverse a imaginii filtrate
  • Tipuri de filtre:
    • Filtrul trece jos
    • Filtrul trece-jos Gaussian
    • Filtrul trece sus
    • Filtrul trece-sus Gaussian

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)
    • se apasa tasta SPACE sau F sau ENTER
  • salvarea imaginii curente
    • se apasa tasta S
  • schimbarea intre procesare pe GPU/CPU
    • se apasa tasta E
  • schimbarea efectului procesat
    • se apasa tastele 0 (original), 1 (grayscale), 2 (blur)

  • Framework-ul utilizeaza WIN_API pentru file browsing.
  • In cazul in care codul nu compileaza corespunzator se poate dezactiva functionalitatea comentand define-ul WIN_API_FILE_BROWSING din Laborator7.h
#define WIN_API_FILE_BROWSING

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

  1. Investigati implementarea GPU / CPU pentru filtrele prezentate
  2. Implementati si alte filtre invatate la curs
spg/laboratoare/07.txt · Last modified: 2018/11/09 03:03 by gabriel.ivanica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0