ĆWICZENIE 3/4 ANALIZA ALGORYTMU SZYBKIEJ TRANSFORMATY FOURIERA (FFT I PROPAGACJA) Wstęp teoretczn Transformata Foriera. Z pnkt widzenia optki transformacja Foriera odpowiada rozkładowi front falowego na fale płaskie, propagjące się pod różnmi kątami w stosnk do głównej osi optcznej kład. Opis rozchodzenia się jednorodnej fali płaskiej w ośrodk jednorodnm i izotropowm nie jest złożon. Taka fala pozostaje nieskończoną, równomierną falą płaską, w której zmienia się tlko faza. Tak zdefiniowane podejście nie zawiera istotnch przbliżeń i w zakresie skalarnej teorii dfrakcji ważane jest za niemal ścisłe. Taka interpretacja stanowi podstawę wiel algortmów obliczeniowch i jest też podstawą tego ćwiczenia. Transformację Foriera stosję się także do rozkład fali qasi-monochromatcznej na fale monochromatczne. Jednowmiarowe przekształcenie Foriera. Jednowmiarowa transformata (przekształcenie) Foriera zdefiniowana jest przez następjącą całkę: I + f ( ) = F( ν ) = f ( ) ep[ π iν ] d (1) Fnkcji f zmiennej przporządkowwana jest fnkcja F zmiennej ν, zwanej częstością przestrzenną. Fnkcja F zwana jest transformatą Foriera fnkcji f. F oraz f są w ogólności fnkcjami o wartościach zespolonch. Odwrotne przekształcenie Foriera opisje wzór: I 1 + F ( ν ) = f ( ) = F( ν ) ep[ π iν ] dν () 1
Ab fnkcja posiadała transformatę Foriera, powinna spełniać następjące warnki: a. powinna bć bezwzględnie całkowalna w całej swej dziedzinie: + ( ) < f d b. powinna posiadać skończoną liczbę minimów i maksimów oraz nieciągłości na dowolnm, skończonm fragmencie dziedzin (zbior liczb rzeczwistch) c. nie powinna mieć nieciągłości nieskończonch. Dwwmiarowe przekształcenie Foriera. I [ ] + f (, ) = F( v, ν ) = f (, ) ep π i( ν + ν ) dd (3) Odwrotne dwwmiarowe przekształcenie Foriera określone jest następjąco: I + F( ν, ν ) = f (, ) = F( ν, ν ) ep[ π i( v + ν )] dvdv 1 (4) Znaczenie parzstości i nieparzstości fnkcji. Tabela 1 Parzstość i nieparzstość fnkcji i jej transformat Foriera. FUNKCJA Rzeczwista i parzsta Rzeczwista i nieparzsta Urojona i parzsta Zespolona i parzsta Zespolona i nieparzsta Rzeczwista parzsta oraz rojona nieparzsta Rzeczwista nieparzsta oraz rojona parzsta TRANSFORMATA Rzeczwista i parzsta Urojona i nieparzsta Urojona i parzsta Zespolona i parzsta Zespolona i nieparzsta Rzeczwista Urojona
Przkład często żwanch fnkcji i ich transformat. rect comb Tabela Często żwane fnkcje i ich transformat Foriera. FUNKCJA ( ) = rect( ) rect( ) TRANSFORMATA sinc ν sinc ν ( πρ ), gdzie ρ = ν + ν ρ, ( ) ( ) ( r) = circ( ) circ + (, ) ( ) = comb( ) comb( ) δ 1 comb ν comb ν, ( ) ( ) [ π ( + )] [ ( )] ep π ν + ν ep 1 1 ep [ i π ( + ) ] δ ν, ν J 1 Własności. FUNKCJA Tabela 3 Własności transformat Foriera. TRANSFORMATA g ( ) G ( ν ) h ( ) H ( ν ) g( ) G ( ν ) g ( ) G ( ν ) 1 ν g ( a) G a a a b d g( ) d h πiaν g b e G( bν ) ( ) πν G ν g( ) ( ) G( ν ) H ( ν ) g( ) h( ) G( ν ) H ( ν ) Dskretn szereg Foriera. Wstępjące w natrze wielkości fizczne są opisane fnkcjami tak różnorodnmi i skomplikowanmi, że nie jesteśm w stanie wznaczć analitcznie ich transformat Foriera, mimo że wiadomo, iż transformat te istnieją. Koniecznm staje się nmerczne znajdowanie par transformat, a jest to możliwe dzięki dskretnm przekształceniom Foriera (prostem 3
i odwrotnem). Dskretna Transformata Foriera (DFT) operje na fnkcjach zdskretzowanch, a więc konieczne jest próbkowanie fnkcji. Poniżej przedstawione rozważania dotczą fnkcji jednowmiarowch. Jeżeli rozważam ciąg okresow (n) o okresie N, to możliwe jest jego przedstawienie za pomocą szereg Foriera, mającego postać sm zespolonch wrazów wkładniczch, w którch częstotliwości są wielokrotnościami częstości podstawowej π/n ciąg okresowego. Szereg Foriera ciąg okresowego, w przeciwieństwie do szereg Foriera okresowej fnkcji ciągłej, ma tlko N różnch zespolonch wrazów wkładniczch, z którch każd ma okres będąc podwielokrotnością podstawowego okres N. Zatem okresow ciąg (n) można przedstawić w postaci szereg Foriera zawierającego tlko N wrazów: 1 1 N N k= 0 nk N ( n) = X ( k) ep π i (5) Istnienie współcznnika 1/N wiąże się z koniecznością normalizacji. Współcznniki X(k) określone są zależnością: N 1 = n= 0 nk N X ( k) ( n) ep π i (6) Przedstawianie ciągów okresowch za pomocą dskretnego szereg Foriera można wkorzstać także do forierowskiego przedstawiania ciągów o skończonej dłgości; jest ono wted nazwane dskretną transformatą Foriera. Wmaga ono jednakże odpowiedniej interpretacji: konieczne jest przedstawienie ciąg o skończonej dłgości N za pomocą ciąg okresowego o okresie N, któr w ramach jednego okres jest identczn z ciągiem o skończonej dłgości. Ponieważ ciąg okresow można przedstawić jednoznacznie za pomocą dskretnego szereg Foriera, to można w ten sposób, również jednoznacznie, przedstawić wjściow ciąg o skończonej dłgości (mając dskretn szereg Foriera można odtworzć ciąg okresow, a następnie, biorąc jeden okres, zskać ciąg wjściow). Praktczne wkorzstanie DFT. Zerow rząd widma znajdje się w elemencie X(0) ciąg wjściowego, a cał ciąg reprezentje jednie jeden okres widma. Okresow ciąg wejściow (n) (dla n całkowitch) można traktować jako zbiór próbek okresowej fnkcji ciągłej. Widmo forierowskie takiej fnkcji jest okresowe (bo fnkcja bła próbkowana) i dskretne (bo fnkcja bła okresowa). Wkonanie odwrotnej transformat Foriera takiego widma da fnkcję okresową i dskretną. 4
Rsnek 1 Widmo Foriera fnkcji próbkowanej i okresowej (jest okresowe i dskretne). Jeżeli badana fnkcja osiąga niezerowe wartości na krańcach okres, to często obserwje się zniekształcenia widma wsktek powstawania nieciągłości (są one źródłem niepożądanch harmonicznch). Szbka transformata Foriera (FFT). Na możliwość znacznej redkcji liczb obliczeń zwrócono wagę dopiero w rok 1965, gd Coole i Tke opblikowali algortm wznaczania dskretnej transformat Foriera dla ciągów, którch dłgość N jest liczbą złożoną (jest ilocznem dwóch lb więcej liczb całkowitch). Algortm FFT wkorzstją własności smetrii i okresowości odpowiednich fnkcji. Algortm te zastępją obliczenia dskretnej transformat Foriera dla ciąg o dłgości N, przez obliczenia dla ciągów odpowiednio krótszch. Algortm FFT z podziałem czasowm. Algortm FFT jest najefektwniejsz i ma najprostszą postać dla ciągów o dłgości N, będącej wielokrotnością, tzn. p, gdzie p jest liczbą natralną. Zastosowanie tego algortm możliwia zmniejszenie liczb działań w trakcie obliczania dskretnej transformat Foriera do (N/)log N mnożeń i Nlog N smowań liczb zespolonch, w stosnk do koniecznch N mnożeń i N(N-1) smowań zespolonch w przpadk korzstania bezpośrednio z definicji DFT. Ab osiągnąć wzrost wdajności obliczeń, należ rozłożć obliczenia dskretnej transformat Foriera na obliczenia o stopniowo zmniejszającm się rozmiarze. Przkładowo oblicza się dwie dskretne transformat Foriera o okresie N/, a następnie odpowiednio się je łącz. Wznaczenie tch transformat oraz operacja ich połączenia wmagają mniejszej liczb działań na liczbach zespolonch niż bezpośrednie obliczenie ciąg. Obliczenia sprowadzają się więc do wznaczenia wiel transformat dwpnktowch, a następnie odpowiedniego ich łączenia w coraz większe transformat, aż do zskania jednej, N-pnktowej transformat. Całe to postępowanie owocje, jak to wcześniej zaznaczono, znacznm ograniczeniem liczb działań artmetcznch, dzięki nikani wielokrotnego obliczania tch samch danch 5
(nastąpiła znaczna optmalizacja proces obliczeń względem klascznego podejścia do wznaczania DFT). Można wprowadzić następjącą interpretację tej operacji. Wkonwane są dwie (zamiast jednej) dskretne transformat Foriera badanej fnkcji, ale dla próbkowania dwa raz rzadszego niż jest to pożądane; jednakże informacja nie jest tracona, ponieważ próbki pobierane bł w ob przpadkach z różnch pnktów i informacje zawarte w ob transformatach wzajemnie się zpełniają. Obliczenie -wmiarowej transformat Foriera na macierz złożonej z m wektorów o dłgości n sprowadza się do policzenia m transformat (dłgości n) po wierszach. Następnie obliczam n transformat (dłgości m) po kolmnach. Przkładow kod FFT załączon jest w Załącznik A. Nmerczna propogacja. 1 Q 1 r P z Rsnek Schemat płaszczzn w rozważanm kładzie optcznm. W cel obliczenia zespolonej amplitd pola świetlnego w odległości z od rozkład wejściowego 1 należ obliczć poniższą całkę. Zakładam parametr tpowe dla stref Fresnela. ( ikz) [ 1 1 ] d1 1 + ep ik ( ) = 1( 1, 1 ) ep ( ) ( ) d i z + λ z, (7) Obliczenia mogą zostać dokonane różnmi sposobami. Bezpośrednia metoda. Polega na bezpośrednim liczeni nmercznm całki (7). Istnieje t jednak poważn problem. Parametr z wstępjąc w cznnik Fresnela jest mieszczon w mianownik łamka. Stąd prz małej wartości parametr z wstępją dże zmian faz, co z kolei powodje szbkie osclacje. Niezbędna jest dża ilość pnktów próbkowania w płaszczźnie 1, 1. We współrzędnch kartezjańskich całkę (7) można przepisać do następjącej postaci. 6
(, ) + 1 ep = iλz ( ikz) ik ep ( + ) ik z z ( 1, 1 ) ep ( 1 + 1 ) ep ( 1 + 1 ) d1 d1 πi zλ (8) Całka może bć liczona prz żci standardowch metod nmercznch (np. metodą prostokątów, trapezów itp.). Należ pamiętać, że obliczane wielkości są liczbami zespolonmi. Zaletą metod jest łatwość przeskalowwania współrzędnch 1, 1 oraz,. Wadą jest bardzo dłgi czas obliczeń. Metoda FFT. Metoda bazje na fakcie, że zespoloną amplitdę w płaszczźnie wjściowej można przedstawić w postaci transformacji Foriera pola wejściowego pomnożonego przez cznnik fresnelowski. ep iλz ( ik z) ik ik ( ) ( ) ( ) (, ) = ep + I 1 1, 1 ep 1 + 1 (9) gdzie... z I oznacza transformację Foriera. Podstawową zaletą metod jest szbkość obliczeń. Często za wadę metod waża się, że współrzędne wejściowe ( 1, 1 ) i wjściowe (, ) są przeskalowane przez cznnik, któr zależ od odległości z. Płaszczzna wjściowa powinna bć próbkowana z inną częstotliwością niż płaszczzna wejściowa. Istotnm mankamentem jest fakt, że parametr z w cznnik Fresnela jest mieszczon w mianownik łamka. Małe zmian parametr z powodją dże zmian faz, co z kolei powodje szbkie osclacje. Niezbędna jest dża ilość pnktów próbkowania w płaszczźnie 1, 1. z ν ν, SPLOT dwkrotne żcie FFT w cel obliczenia splot. Metoda bazje na rozkładzie pola wejściowego na fale płaskie. Warto wspomnieć, że jest to bardziej ogólne podejście do zagadnienia dfrakcji niż całka (7). Jest to praktcznie zpełnie ścisła metoda w ramach skalarnej teorii dfrakcji. ep iλz ( ikz) ik ( ) (, ) = 1(, ) h(, ; λ, z) ; h(, ; λ, z) = ep + (10) Rozkład wjściow można przedstawić jako splot rozkład wejściowego z fnkcją odpowiedzi implsowej swobodnej przestrzeni. H z ( ν ν ) I h(, ) = ep( ikz) ep[ iπλz( ν + ν )], = (11) 7
Istnieje również następjąca interpretacja. Rozkład wejściow jest rozkładan na fale płaskie o różnch amplitdach i kątach propagacji. Każda fala płaska - niezależnie od innch - doznaje stosownego opóźnienia fazowego. Rozkład wjściow jest sperpozcją "skorgowanch" fal płaskich. W cel łatwego i szbkiego obliczenia splot korzsta się z procedr FFT - jako narzędzia metod nmercznch. Pole wejściowe ( ) 1 1, 1 FFT Mnożenie zespolone z H FFT -1 Pole wjściowe ( ), Rsnek 3 Algortm obliczania splot. Do zalet metod można zaliczć dwa fakt. Wejściowe ( 1, 1 ) i wjściowe (, ) współrzędne są identczne. Faza fnkcji przenoszenia H(ν, ν ) liniowo zależ od z. Zadania do wkonania: Przeprowadzenie smlacji w aplikacji LightSword (dostępna w laboratorim) na macierz 048 048 pnktów. Próbkowanie 10 µm 10 µm. Dłgość fali światła λ=0.638 µm 1) Wgenerować dwwmiarową fnkcję stałą. Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz. Dokonać ponownej transformat Foriera. Zarejestrować rozkład amplitd i faz. ) Wgenerować dwwmiarową fnkcję rects mieszczoną centralnie (małe rozmiar 10 10 pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 3) Wgenerować dwwmiarową fnkcję rects mieszczoną z przesnięciem (małe rozmiar 10 10 pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. Sprawdzić twierdzenie o przesnięci. 4) Wgenerować dwwmiarową fnkcję rects (z losową fazą) mieszczoną centralnie (małe rozmiar 10 10 pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 5) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (małe rozmiar promień 10 pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 8
6) Wgenerować dwwmiarową fnkcję circs (z losową fazą) mieszczoną centralnie (małe rozmiar promień 10 pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 7) Wgenerować dwwmiarową fnkcję rects mieszczoną centralnie (dże rozmiar kilkaset na kilkaset pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 8) Wgenerować dwwmiarową fnkcję rects (z losową fazą) mieszczoną centralnie (dże rozmiar kilkaset na kilkaset pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 9) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (dże rozmiar promień kilkaset pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 10) Wgenerować dwwmiarową fnkcję circs (z losową fazą) mieszczoną centralnie (dże rozmiar promień kilkaset pikseli). Obliczć widmo Foriera. Zarejestrować rozkład amplitd i faz oraz przekrój poprzeczn w trbie logartmicznm z powiększeniem 1:1. 11) Obliczć splot dwwmiarowch fnkcji rects o identcznch rozmiarach (100 100 pikseli). Zarejestrować wnikow rozkład amplitd oraz przekrój poprzeczn. 1) Obliczć splot dwwmiarowch fnkcji rects o różnch rozmiarach (100 100 pikseli i 50 50 pikseli). Zarejestrować wnikow rozkład amplitd oraz przekrój poprzeczn. 13) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (promień R=1mm). Obliczć propagację (on-ais, qalit high, Doble window) na odległość z=1580 mm. Zarejestrować rozkład natężenia (zapisać jako 13.TAB). 14) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (promień R=1mm). Obliczć propagację (on-ais, qalit normal, NoWindow) na odległość z=1580 mm. Zarejestrować rozkład natężenia (zapisać jako 14.TAB). 15) Odjąć od plik 14.TAB plik 13.TAB. Zarejestrować rozkład natężenia i zinterpretować wnik. 16) Wgenerować dwwmiarową fnkcję circs stczną do brzeg analizowanego obszar (promień R=1mm). Obliczć propagację (on-ais, qalit high, Doble window) na odległość z=1580 mm. Zarejestrować rozkład natężenia (zapisać jako 16.TAB). 9
17) Wgenerować dwwmiarową fnkcję circs stczną do brzeg analizowanego obszar (promień R=1mm). Obliczć propagację (on-ais, qalit normal, NoWindow) na odległość z=1580 mm. Zarejestrować rozkład natężenia (zapisać jako 17.TAB). 18) Odjąć od plik 17.TAB plik 16.TAB. Zarejestrować rozkład natężenia i zinterpretować wnik. 19) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (promień R=1mm). Obliczć propagację (on-ais, qalit high, Doble window) na odległość z=158 mm. Zarejestrować rozkład natężenia (zapisać jako 19.TAB). 0) Wgenerować dwwmiarową fnkcję circs mieszczoną centralnie (promień R=1mm). Obliczć propagację (on-ais, qalit normal, NoWindow) na odległość z=158 mm. Zarejestrować rozkład natężenia (zapisać jako 0.TAB). 1) Odjąć od plik 0.TAB plik 19.TAB. Zarejestrować rozkład natężenia i zinterpretować wnik. ) Wgenerować dwwmiarową fnkcję circs stczną do brzeg analizowanego obszar (promień R=1mm). Obliczć propagację (on-ais, qalit high, DbWindow) na odległość z=158 mm. Zarejestrować rozkład natężenia (zapisać jako.tab). 3) Wgenerować dwwmiarową fnkcję circs stczną do brzeg analizowanego obszar (promień R=1mm). Obliczć propagację (on-ais, qalit normal, NoWindow) na odległość z=158 mm. Zarejestrować rozkład natężenia (zapisać jako 3.TAB). 4) Odjąć od plik 3.TAB plik.tab. Zarejestrować rozkład natężenia i zinterpretować wnik. 5) Przeprowadzić smlację obrazowania obiekt dwwmiarowego w kładzie f-f. Sprawdzić rozkład pola poza płaszczzną obrazowania (np. 10mm). Przjąć f około 00 mm. 6) Przeprowadzić smlację obrazowania obiekt dwwmiarowego z rozpraszaczem w kładzie f-f. Sprawdzić rozkład pola poza odległością obrazowania (np. 10 mm). Przjąć f około 00 mm. 7) Wkonać górnoprzepstową i dolnoprzepstową filtrację przestrzenną na binarnm obiekcie graficznm (prz żci fnkcji Band Pass Filter - Amplitde). Zarejestrować wnikowe rozkład amplitd. 8) Wkonać górnoprzepstową i dolnoprzepstową filtrację przestrzenną na szaroodcieniowm obiekcie graficznm (prz żci fnkcji Band Pass Filter - Amplitde). Zarejestrować wnikowe rozkład amplitd. 9) Uzskać na obrazie qasi periodcznm poprzez filtrację przestrzenną efekt odwrócenia kontrast. 10
30) Odfiltrować periodczne zabrzenie z obraz poprzez filtrację przestrzenną. 31) Odfiltrować obraz z tego samego zdjęcia (pozostawiając tlko periodczne zabrzenie). 3) Dokonać korelacji binarnego obraz przedstawiającego element elektroniczn z binarnm obrazem przedstawiającm obwód drkowan. Zarejestrować rozkład natężenia. Zidentfikować piki korelacjne. Zarejestrować ich przekroje poprzeczne. 33) Dokonać korelacji szaroodcieniowego obraz przedstawiającego element elektroniczn z szaroodcieniowm obrazem przedstawiającm obwód drkowan. Zarejestrować rozkład natężenia. Zidentfikować piki korelacjne. Zarejestrować ich przekroje poprzeczne. 34) Smlacja obrazowania w świetle niespójnm (analogia do wirjącej matówki). Najpierw przeprowadzić smlację obrazowania obiekt dwwmiarowego z rozpraszaczem w kładzie f-f (zapisać jako obraz01.tab). Następnie wkonać 9 takich smlacji za każdm razem przeswając dfzor o kolejn 1mm (prz żci fnkcji Roll), zapisjąc je jako kolejne pliki TAB. Na końc dodać wszstkie pliki TAB. Zestawić obraz zskane dla kolejnch sm i porównać wniki. Sformłować wnioski dotczące ilości szm w zskanch obrazach. 35) Smlacja propagacji front falowego za przeźroczem i za amplitdową siatką binarną (gięcie na amplitdowej siatce dfrakcjnej), w świetle koherentnm dla różnch dłgości fali światła (RGB - 63.8nm, 53nm, 48nm). Pracownia Informatki Optcznej WF PW Marzec 010 11
Załącznik A Poniżej przedstawiona została przkładowa procedra napisana przez mgr inż. Marisza Krkowskiego. /* ***** START Inicjalizacja FFT START ***** */ void fftinit(nsigned int N,nsigned int p) PiN=*3.14159654/N; tabl[0]=0; m=1; for(i=1;i<=p;i++) m=m*; mm=n/m; for(j=0;j<m;j++) tabl[j+m]=tabl[j]+mm; m*=; j=n>>1; for(i=0;i<j;i++) sins[i]=sin(pin*i); cosins[i]=cos(pin*i); /* ***** START FFT START ***** */ nsigned int ip,ni,nj,ii,iii,n; nsigned int adr1,adr,adr3,phi; float re,im; void fft(nsigned int N, nsigned int p) for(i=0;i<n;i++) Bre[i]=Are[tabl[i]]; Bim[i]=Aim[tabl[i]]; ii=1; iii=n; for(ip=1;ip<=p;ip++) ii<<=1; iii>>=1; N=N/ii; for(ni=0;ni<n;ni++) adr=ii>>1; 1
adr1=ni*ii; phi=0; for(nj=0;nj<adr;nj++) adr3=adr1+adr; re=bre[adr3]*cosins[phi] + Bim[adr3]*sins[phi]; /* dla odwrotnej zmienic znak na - */ im=bim[adr3]*cosins[phi] - Bre[adr3]*sins[phi]; /* dla odwrotnej zmienic znak na + */ Bre[adr3]=Bre[adr1] - re; Bim[adr3]=Bim[adr1] - im; Bre[adr1] += re; Bim[adr1] += im; adr1++; phi+=iii; /* dla odwrotnej podzielic wszstkie elment przez N */ 13