PRZETWARZANIE OBRAZÓW: Filtracja
w dziedzinie częstotliwości
VI.
© P.Ślusarczyk 2013
Strona 1 z 1
1. P
rzeanalizuj działanie następującego programu
#include "CImg.h"
using namespace cimg_library;
int main() {
// Wczytanie obrazu z pliku
CImg<unsigned char> oryginal =
CImg<unsigned char>("lena.pgm").resize(256,256);
// Obliczenie FFT (dwie macierze, bo FFT jest zespolona)
CImgList<> widmoFFT = oryginal.get_FFT();
// Wyśrodkowanie widma Fouriera
widmoFFT[0].
translate(oryginal.dimx()/2,oryginal.dimy()/2,0,0,2);
widmoFFT[1].
translate(oryginal.dimx()/2,oryginal.dimy()/2,0,0,2);
// Widmo amplitudowe (tylko dla prezentacji w oknie)
CImg<unsigned char> widmoAmpl =
((widmoFFT[0].get_pow(2)+widmoFFT[1].get_pow(2)).
sqrt()+1.0f).log().normalize(0,255);
// Utworzenie maski
CImg<unsigned char>
maska(oryginal.dimx(),oryginal.dimy(),1,1,1);
unsigned char one[] = { 1 }, zero[] = { 0 }, white[] = { 255 };
int rmin = 25, rmax = 256;
maska.fill(0).
draw_circle(widmoAmpl.dimx()/2,widmoAmpl.dimy()/2,rmax,one).
draw_circle(widmoAmpl.dimx()/2,widmoAmpl.dimy()/2,rmin,zero);
// Nowe widmo amplitudowe (tylko dla prezentacji w oknie)
CImg<unsigned char> noweWidmoAmpl(widmoAmpl);
noweWidmoAmpl.mul(maska);
// Filtracja
CImgList<> noweWidmoFFT(widmoFFT);
noweWidmoFFT[0].mul(maska).
translate(-oryginal.dimx()/2,-oryginal.dimy()/2,0,0,2);
noweWidmoFFT[1].mul(maska).
translate(-oryginal.dimx()/2,-oryginal.dimy()/2,0,0,2);
CImg<unsigned char> filtrowany(oryginal);
filtrowany = noweWidmoFFT.FFT(true)[0].normalize(0,255);
CImgList<unsigned char> okno(oryginal,
widmoAmpl,
maska.normalize(0,255),
noweWidmoAmpl,
filtrowany);
CImgDisplay disp(okno,"Filtracja Fouriera");
while (!disp.is_closed) {
okno.display(disp);
}
return 0;
}
2.
Wykorzystując program z zadania 1, przeprowadź idealną filtrację górno-, dolno-
i pasmowo
przepustową obrazów:
• Fig0441(a)(characters_test_pattern).tif
• Fig0334(a)(hubble-original).tif
Powyższy obraz jest dostępny w pliku:
Wyniki filtracji
zostały zaprezentowane w dokumencie:
3. Napisz program
implementujący filtrację Gaussa w dziedzinie częstotliwości i
przeprowadź idealną filtrację górno- i dolnoprzepustową następujących obrazów:
• Fig0441(a)(characters_test_pattern).tifFig0334(a)(hubble-original).tif
• Fig0450(a)(woman_original).tif
• Fig0451(a)(satellite_original).tif
• Fig0419(a)(text_gaps_of_1_and_2_pixels).tif