Komputerowe Przetwarzanie Obrazów Szybka Transformata Fouriera. 1. Generowanie sygnałów 1D o różnych częstotliwościach oraz dodawanie szumu.

Podobne dokumenty
Transformata Fouriera i analiza spektralna

DYSKRETNA TRANSFORMACJA FOURIERA

ĆWICZENIE III ANALIZA WIDMOWA SYGNAŁÓW DYSKRETNYCH. ver.3

7. Szybka transformata Fouriera fft

Diagnostyka obrazowa

9. Dyskretna transformata Fouriera algorytm FFT

PRZETWARZANIE SYGNAŁÓW LABORATORIUM

Diagnostyka obrazowa

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Transformacje i funkcje statystyczne

Komputerowe przetwarzanie obrazu Laboratorium 5

Przetwarzanie obrazów wykład 6. Adam Wojciechowski

Katedra Elektrotechniki Teoretycznej i Informatyki

Analiza obrazów - sprawozdanie nr 2

Katedra Elektrotechniki Teoretycznej i Informatyki

Podstawy Przetwarzania Sygnałów

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 6. Transformata cosinusowa. Krótkookresowa transformata Fouriera.

Przetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.

Technika audio część 2

Szybka transformacja Fouriera

Komunikacja Człowiek-Komputer

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Przetwarzanie i transmisja danych multimedialnych. Wykład 7 Transformaty i kodowanie. Przemysław Sękalski.

Analiza szeregów czasowych: 2. Splot. Widmo mocy.

Przetwarzanie obrazów rastrowych macierzą konwolucji

Przekształcenie Fouriera i splot

Cyfrowe Przetwarzanie Obrazów i Sygnałów

FFT i dyskretny splot. Aplikacje w DSP

WOJSKOWA AKADEMIA TECHNICZNA

Detekcja punktów zainteresowania

uzyskany w wyniku próbkowania okresowego przebiegu czasowego x(t) ze stałym czasem próbkowania t takim, że T = t N 1 t

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

Przekształcenie Fouriera obrazów FFT

Filtracja obrazów. w dziedzinie częstotliwości. w dziedzinie przestrzennej

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Analiza szeregów czasowych: 2. Splot. Widmo mocy.

Laboratorium Przetwarzania Sygnałów Biomedycznych

Przetwarzanie Sygnałów. Zastosowanie Transformaty Falkowej w nadzorowaniu

Zygmunt Wróbel i Robert Koprowski. Praktyka przetwarzania obrazów w programie Matlab

Zastowowanie transformacji Fouriera w cyfrowym przetwarzaniu sygnałów

Segmentacja przez detekcje brzegów

Przetwarzanie sygnałów biomedycznych

Transformaty. Kodowanie transformujace

Transformata Fouriera

Wprowadzenie do przetwarzania obrazów

Transformacja Fouriera i biblioteka CUFFT 3.0

EKSTRAKCJA CECH TWARZY ZA POMOCĄ TRANSFORMATY FALKOWEJ

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Politechnika Świętokrzyska. Laboratorium. Przetwarzanie obrazów medycznych. Ćwiczenie 12. Wykorzystanie transformacji Radona i Hougha.

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

Zastosowanie Informatyki w Medycynie

ANALIZA WIDMOWA SYGNAŁÓW (1) Podstawowe charakterystyki widmowe, aliasing







Szybka transformacja Fouriera (FFT Fast Fourier Transform)

dr inż. Artur Zieliński Katedra Elektrochemii, Korozji i Inżynierii Materiałowej Wydział Chemiczny PG pokój 311

POLITECHNIKA OPOLSKA

Adam Korzeniewski p Katedra Systemów Multimedialnych

EUROELEKTRA Ogólnopolska Olimpiada Wiedzy Elektrycznej i Elektronicznej Rok szkolny 2013/2014. Zadania z teleinformatyki na zawody II stopnia

Cyfrowe przetwarzanie i kompresja danych

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Podstawy Programowania C++

CYFROWE PRZTWARZANIE SYGNAŁÓW (Zastosowanie transformacji Fouriera)

PL B1. Sposób i układ pomiaru całkowitego współczynnika odkształcenia THD sygnałów elektrycznych w systemach zasilających

Wykład 2: Szeregi Fouriera

Wstęp do metod numerycznych Dyskretna transformacja Fouriera. P. F. Góra

Matlab Składnia + podstawy programowania

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Rentgenowska analiza strukturalna Synteza Fouriera. Synteza Pattersona. Rozwiązywanie modelowych struktur na podstawie analizy map Pattersona.

Karta produktu. EH-Wibro. System monitoringu i diagnostyki drgań

Laboratorium Przetwarzania Sygnałów

Laboratorium Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z przetwarzaniem sygnałów w MATLAB. 2. Program ćwiczenia. Przykład 1 Wprowadź

Filtracja obrazu operacje kontekstowe

Ćwiczenia 05. Sylwester Arabas (ćwiczenia do wykładu prof. Szymona Malinowskiego) 9. listopada 2010 r.

Splot i korelacja są podstawowymi pojęciami przetwarzania sygnałów.

2. Szybka transformata Fouriera

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L

Przetwarzanie analogowo-cyfrowe sygnałów

Algorytmy detekcji częstotliwości podstawowej

Przetwarzanie sygnałów

Przetwarzanie obrazu

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski

Cyfrowe przetwarzanie sygnałów. Wykład 10. Transformata cosinusowa. Falki. Transformata falkowa. dr inż. Robert Kazała

Analiza obrazu. wykład 5. Marek Jan Kasprowicz Uniwersytet Rolniczy 2008

Filtracja obrazu operacje kontekstowe

Joint Photographic Experts Group

Transformacje Fouriera * podstawowe własności

Tablice, DataGridView

SZCZEGÓLNE ROZWAśANIA NAD UŚREDNIONYMI POMIARAMI Special Considerations for Averaged Measurements

NIEOPTYMALNA TECHNIKA DEKORELACJI W CYFROWYM PRZETWARZANIU OBRAZU

Wydział Elektryczny. Temat i plan wykładu. Politechnika Białostocka. Wzmacniacze

Dźwięk i psychika STEROWANIE UMYSŁEM GRACZA ZA POMOCĄ DRGAŃ POWIETRZA MARCIN KOSZÓW DLA TK GAMES 2

WOJSKOWA AKADEMIA TECHNICZNA

Diagnostyka ukladów napedowych

Transkrypt:

Komputerowe Przetwarzanie Obrazów Szybka Transformata Fouriera 1. Generowanie sygnałów 1D o różnych częstotliwościach oraz dodawanie szumu. t = 0:0.001:2; x1 = sin( 3*pi*2*t ); plot(t,x1) title('czestotliwosc rowna 3 Hz') x2 = sin( 5*pi*2*t ); plot(t,x2) title('czestotliwosc rowna 5 Hz') x = x1+x2; plot(t,x) title('polaczone sygnaly o czestotliwosciach 3 oraz 5 Hz') x = x + 0.8*(1-2*rand(size(x))); plot(t,x) title('polaczone sygnaly z dodanym szumem') 2. Analiza częstotliwości występujących w sygnale t = 0:0.001:2; x1 = sin( 25*pi*2*t ); plot(t,x1) title('czestotliwosc rowna 25 Hz') x2 = sin( 40*pi*2*t ); plot(t,x2) title('czestotliwosc rowna 40 Hz')

x = x1+x2; plot(t,x) title('polaczone sygnaly o czestotliwosciach 25 oraz 40 Hz') Y = fft(x,512); Y2 = Y.* conj(y) / 512; %tylko pierwsza polowa wspolczynników jest znacząca f = 1000*(0:256)/512; plot(f,y2(1:257)) title('frequency content of x') xlabel('frequency (Hz)') 3. Jednowymiarowa transformata Fouriera i odwrotna transformata Fouriera len = 512 t = 0:len; x = sin(0.08*t)+sin(0.03*t); plot(t,x); title('oryginalny sygnal') xlabel('czas') y=fft(x) Y2 = y.* conj(y); plot(y2(1:len/2)) title('wspolczynniki rozwiniecia za pomoca FFT') xlabel('czestotliwosc w Hz') x2 = ifft(y); plot(t,x2) title('sygnal odzyskany po zastosowaniu odwrotnej transformaty Fouriera') xlabel('czas')

4. Usuwanie szumów z sygnału 1D za pomocą FFT (Fast Fourier Transform). Zwróć uwagę na zniekształcenia na lewym i prawym skraju odfiltrowanego sygnału. len = 512 t = 0:len; x = sin(0.08*t)+sin(0.03*t) + sin(0.2*t); plot(t,x); title('oryginalny sygnal') x = x + 2*(-1 + 2*rand(size(x))); plot(t,x); title('oryginalny sygnal z dodanym szumem') xlabel('czas') y=fft(x) Y2 = y.* conj(y); plot(y2(1:len/2)) title('wspolczynniki FFT') xlabel('czestotliwosc [Hz]') max(y2) min(y2) mask = Y2 > 0.2*max(Y2); Y2 = Y2.* mask; y = y.* mask; plot(y2(1:len/2)) title('wspolczynniki FFT po usunieciu zbyt slabych czestotliwosci') xlabel('czestotliwosc [Hz]') x2 = ifft(y); plot(t,x2) title('odzyskany sygnal') xlabel('czas') ; ;

5. Dwuwymiarowa FFT oraz IFFT (Inverse Fast Fourier Transform). Zwróć uwagę, że rysunek transformaty pokazuje większą energię dla dużych horyzontalnych częstotliwości niż dla dużych wertykalnych częstotliwości. Wynika to z faktu, iż na oryginalnym rysunku szybsze zmiany następują w przekroju poziomym (tzn. jest większa częstotliwość zmian), dlatego, że prostokąt jest węższy w poziomie. size = [32 32] %size = [512 512] x = zeros(size); x(size(1)/4:3*size(1)/4, 3*size(2)/8 : 5*size(2)/8) = ones(size(1)/2+1, (5/8-3/8)*size(2)+1); imshow(x,'notruesize') title('obraz oryginalny') F2 = log(abs(f)); imshow(f2,[-1 5],'notruesize'); colormap(jet); colorbar title('fft') %size(f2) F = fft2(x,256,256); F2 = log(abs(f)); imshow(f2,[-1 5],'notruesize'); colormap(jet); colorbar title('fft z uzupelnieniem zerami do rozmiaru 256x256') %size(f2) %przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku F2 = fftshift(f); F2 = log(abs(f2)); imshow(f2,[-1 5],'notruesize'); colormap(jet); colorbar title('fft i przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku') x2 = ifft2(f); imshow(real(x2),'notruesize') title('odwrotna FFT')

6. Przykłady działania FFT na różnych obrazach x = imread('fig1.bmp'); x = rgb2gray(x); %x = imread('portret.jpg'); x = double(x)/255; imshow(x,'notruesize') title('obraz oryginalny') F2 = log(1 + abs(f)); minn = min(min(f2)) maxx = max(max(f2)) title('fft') F = fft2(x,512,512); F2 = log(1 + abs(f)); title('fft z uzupelnieniem zerami do rozmiaru 512x512') %przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku F2 = fftshift(f); F2 = log(1+abs(f2)); title('fft i przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku') x2 = ifft2(f); imshow(real(x2),'notruesize') title('odwrotna FFT') 7. Operacje w przestrzeni częstotliwości usuwanie częstotliwości zbyt małych, zbyt dużych, itd. x = imread('fig1.bmp'); x = rgb2gray(x);

%x = imread('portret.jpg'); x = double(x)/255; imshow(x,'notruesize') title('obraz oryginalny') F2 = log(1 + abs(f)); minn = min(min(f2)) maxx = max(max(f2)) title('fft') F = fft2(x,512,512); F2 = log(1 + abs(f)); title('fft z uzupelnieniem zerami do rozmiaru 512x512') %przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku F2 = fftshift(f); F2 = log(1+abs(f2)); title('fft i przesuniecie ukladu wspolrzednych tak, aby czestotliwosc 0 byla w srodku') F2 = fftshift(f); F2 = log(1 + abs(f2)); minn = min(min(f2)) maxx = max(max(f2)) mask = F2 >= 0.07*maxx; %mask2 = F2 <= 0.9*maxx; %mask = mask & mask2; F = F.* mask; F2 = F2.* mask; title('usuniecie zbyt malych czestotliwosci') x2 = ifft2(f);

imshow(real(x2),'notruesize') title('odwrotna FFT') 8. Konwolucja za pomocą FFT. clear; x = imread('portret.jpg'); s = size(x) x = imread('portret.jpg'); x = double(x)/255; imshow(x,'notruesize') title('obraz oryginalny') mask = [-1,-2,-1; 0, 0, 0; 1, 2, 1]; mask = rot90(mask,2); mask(s(1),s(2)) = 0; % Zero-pad mask to be 8-by-8; %KONWOLUCJA x2 = ifft2(fft2(x).*fft2(mask)); x2 = real(x2); % Remove imaginary part caused by roundoff error imshow(x2,'notruesize'); title('po konwolucji'); mask = [-1,-2,-1; 0, 0, 0; 1, 2, 1]; x3 = filter2(mask, x); %x3 = mat2gray(x3); imshow(x3,'notruesize'); title('po filtrowaniu'); 9. TEMPLATE MATCHING: Korelacja za pomocą FFT - feature detection na przykładzie lokalizacji literki a. WERSJA 1: bw = imread('text.tif'); a=bw(59:71,81:91); %Extract one of the letters "a" from the image. %bw = rot90(bw);

imshow(bw);, imshow(a);, imshow(rot90(a,2)); s = size(bw) s2 = size(a) C = real(ifft2(fft2(bw).* fft2(rot90(a,2),256,256)));, imshow(c,[])%display, scaling data to appropriate range. maxx = max(c(:)) %Find max pixel value in C. %thresh = 45; %Use a threshold that's a little less than max. thresh = 0.9*maxx; %Use a threshold that's a little less than max., imshow(c > thresh)%display showing pixels over threshold. [r c] = find(c > thresh); Z = zeros(size(bw)); for i =1:size(r) disp(sprintf('%d %d',r(i),c(i))); Z(r(i):r(i)+s2(1)-1, c(i):c(i)+s2(2)-1) = a; end imshow(z,[]); WERSJA 2: bw = imread('text.tif'); a=bw(59:71,81:91); %Extract one of the letters "a" from the image. bw = rot90(bw); imshow(bw);, imshow(a);, imshow(rot90(a,3)); s = size(bw) s2 = size(a) C = real(ifft2(fft2(bw).* fft2(rot90(a,3),256,256)));, imshow(c,[])%display, scaling data to appropriate range. maxx = max(c(:)) %Find max pixel value in C. %thresh = 45; %Use a threshold that's a little less than max. thresh = 0.9*maxx; %Use a threshold that's a little less than max., imshow(c > thresh)%display showing pixels over threshold.

[r c] = find(c > thresh); Z = zeros(size(bw)); for i =1:size(r) disp(sprintf('%d %d',r(i),c(i))); Z(r(i):r(i)+s2(2)-1, c(i):c(i)+s2(1)-1) = rot90(a,1); end imshow(z,[]);