06 PO FiltrWidmowa 2013id 6520

background image

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:

http://www.imageprocessingplace.com/downloads_V3/dip3e_downloads/dip3e_book
_images/DIP3E_CH04_Original_Images.zip


Wyniki filtracji

zostały zaprezentowane w dokumencie:

http://www.imageprocessingplace.com/downloads_V3/dip3e_downloads/dip3e_class
room_presentations/DIP3E_CH04_Art_PowerPoint.zip


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


Wyszukiwarka

Podobne podstrony:
06-PO-FiltrWidmowa
07 PO Morfologia 2013id 7065
03 PO Geometria 2013id 4609 Nieznany (2)
05 PO Filtracja 2013id 5967 Nieznany (2)
01 PO CImg 2013id 3069
00 PO Wprowadzenie 2013id 2109
01A PO GIMP 2013id 3293 Nieznany (2)
04 PO Punktowe 2013id 5305
07 PO Morfologia 2013id 7065
[06 PO] Bo Yin Ra Droga do Boga
308 4 inst[1] serw po 01 04 06
B 06 1 Niedziela po Bozym Narodz
Kuchnia francuska po prostu (odc 06) Zupa z ciecierzycy
Kuchnia francuska po prostu (odc 06) Krewetki z solą i pieprzem
Laboratorium z PO Zestaw 06

więcej podobnych podstron