Interkatívny úvod do Fourierovej transformácie

Jez Swanson

Preložil: Jakub Mintal

Fourierova transformácia je náradie používané vo veľa rôznych odvetviach. Tu máme vysvetlené, čo Furierova transformácia robí a niekoľko rôznych spôsobov ako nám môže byť užitočná. A ako pomocou nej môžete urobiť pekné veci, ako napríklad táto:

Vysvetlím, ako táto animácia funguje, a popri tom vysvetlím Fourierovu transformáciu!

Na konci by ste mali mať dobrý obraz o tom

Matematiku a rovnice z toho zatiaľ vynecháme. Je za tým veľa zaujímavej matematiky ale je lepšie najskôr začať s tým, čo to v skutočnosti robí, a prečo by ste to chceli použiť. Ak sa chcete dozvedieť viac o tom "ako", nižšie nájdete niekoľko ďalších návrhov na čítanie!

Tak čo to vlastne je?

Zjednodušene povedané, Fourierova transformácia je spôsob rozdelenia čohokoľvek na niekoľko sínusových vĺn. Ako obvykle, meno pochádza od človeka, ktorý kedysi dávno žil a nazýval sa Fourier.

Začnime s niekoľkými jednoduchými príkladmi a postupne budeme pokračovať našou cestou ďalej. Najskôr sa pozrieme na vlny - vzory, ktoré sa s tokom času opakujú.

Tu je príklad takej vlny:

Tento zvlnený vzor sa dá rozdeliť na sínusové vlny. To znamená, že keď zložíme dve sínusové vlny, dostaneme pôvodný zvlnený vzor.

Fourierova transformácia je spôsob, ako zobrať túto kombinovanú vlnu a dostať z nej späť všetky pôvodné sínusové vlny. V tomto príklade to takmer môžete urobiť vo svojej hlave, len pri pohľade na pôvodnú vlnu.

Prečo? Ukázalo sa, že veľa vecí v skutočnom svete interaguje na základe týchto sínusových vĺn. Väčšinou ich nazývame frekvenciami vlny.

Najzreteľnejším príkladom je zvuk - keď počujeme zvuk, nepočujeme tú krivoľakú čiaru, ale počújeme rôzne frekvencie sínusových vĺn, ktoré spolu tvoria zvuk.

To, že ich dokážeme rozdeliť na počítači, nám môže pomôcť pochopiť, čo človek skutočne počuje. Dokážeme pochopiť, aký vysoký alebo nízky je zvuk, alebo zistiť, o akú notu ide.

Tento proces môžeme použiť aj na vlnách, ktoré nevyzerajú, akoby boli vytvorené zo sínusových vĺn.

Pozrime sa na toto. Hovorí sa tomu štvorcová vlna.

Možno to tak nevyzerá, ale aj tá sa dá rozdeliť na sínusové vlny.

Tentokrát ich technicky potrebujeme nekonečné množstvo, aby sme ju mohli dokonale reprezentovať. Keď pridávame čoraz viac sínusových vĺn, obrazec sa dostáva bližšie a bližšie k štvorcovej vlne, s ktorou sme začali.

Posuňte vyžší posúvník pre zmenu počtu sínusových vĺn.

Všimnete si, že v skutočnosti prvých pár sínusových vĺn robí najväčší rozdiel. S posúvníkom v polovici máme všeobecný tvar vlny, aj keď trochu pokrivený. Tie najmenšie potrebujeme len na to, aby sa zakrivenie vyrovnalo.

Keď budete počúvať vlnu, budete počuť zvuk klesajúci, pretože odstraňujeme vyššie frekvencie.

Tento proces funguje tak isto, pri každej opakujúcej sa krivke. Vyskúšajte si to!

Tu kreslite!

Pohybom posuvníka uvidíte, ako pribúdajú ďalšie sínusové vlny, takže sa bude viac a viac podobať na vašu kresbu.

Znovu, vlna vyzerá, okrem mierneho pokrivenia, veľmi podobne už len s polovicou sinusových vĺn.

V sutočnosti môžeme použiť fakt, že vlna je veľmi podobná, ako našu výhodu. Použitím Fourierovej transformácie, môžeme získať dôležité časti zvuku, uložiť len tie a nakoniec skončíme s niečím, čo je dosť blízko pôvodnému zvuku.

Normálne na počítači ukladáme vlnu ako sériu hodnôt.

Namiesto toho ju však môžeme reprezentovať, ako skupinu sínusových vĺn. Potom môžeme vykonať kompresiu zvuku ignorovaním vyžších frekvencií. Náš konečný výsledok nebude rovnaký ale pre človeka bude znieť dosť podobne.

To je v podstate to, čo robia MP3ky, s výnimkou toho, že sú múdrejšie vo výberaní toho, ktoré frekvencie uchovávajú a ktoré vyhodia.

Takže v tomto prípade môžeme použiť Fourierove transformácie na pochopenie základných vlastností vlny a potom ich môžeme použiť na užitočný proces, akým je kompresia.

Dobre, pozrime sa bližšie na Fourierovú transformáciu. Táto nasledujúca časť nielenže vyzerá zaujímavo, ale tiež vám dáva trochu lepšie pochopenie toho, čo robí Fourierova transformácia. Ale hlavne vyzerá zaujímavo.

Epicykly

Na začiatku sme povedali, že rozdeľuje veci na sínusové vlny. Ide o to, že sínusové vlny, ktoré vytvára, nie sú iba bežné sínusové vlny, ale sú 3D. Môžete ich nazvať „komplexnými sínusoidami“. Alebo jednoducho „špirály“.

Ak sa pozrieme z boku, vyzerajú ako sínusové vlny. Spredu však vyzerajú ako kruhy.

Zatiaľ všetko, čo sme robili, vyžadovalo len normálne sínusové vlny 2D. Keď robíme Fourierovu transformáciu na 2D vlnách, komplexné časti sa vynulujú, takže nakoniec skončíme so sínusovými vlnami.

Ale môžeme použiť 3D sínusové vlny, aby vytvoriť niečo zábavne vyzerajúce, takéto:

Čo sa tu deje?

No, kresbu môžeme považovať za 3D tvar kvôli spôsobu, akým sa vytvára v čase. Ak si viete predstaviť, že ruka bola nakreslená osobou, tri súradnice predstavujú polohu, kde sa v tomto okamihu nachádzala špička ceruzky. Súradnice x a y nám hovoria o polohe v priestore a tretia súradnica je čas v danom okamihu.

Teraz, keď máme trojrozmerný vzor, nemôžeme na jeho reprezentáciu použiť normálne sínusové vlny 2D. Bez ohľadu na to, koľko 2D sínusových vĺn pridáme, nikdy nebudeme mať niečo 3D. Potrebujeme teda niečo iné.

Môžeme použiť predchádzajúce 3D špirálové sínusové vlny. Ak zložíme veľa z nich, môžeme získať niečo, čo vyzerá ako náš trojrozmerný vzor.

Pamätajte, že tieto vlny vyzerajú ako kruhy, keď sa na ne pozeráme spredu. Názov vzoru kruhu, ktorý sa pohybuje okolo iného kruhu, je epicyklus.

Pomocou posúvníka vyššie môžete ovládať počet kruhov.

Rovnako ako predtým, dosiahli sme celkom dobrú aproximáciu nášho modelu len s niekoľkými kruhmi. Pretože sa jedná o pomerne jednoduchý tvar, všetky posledné urobia hrany len o niečo ostrejšie.

To všetko sa vzťahuje na akýkoľvek náčrtok, naozaj! Teraz máte šancu sa s tým pohrať.

Nakreslite tu!

Pomocou posúvníka určte, koľko kruhov sa použije na kreslenie

Znova ste mohli vidieť, že väčšinu tvarov dokážeme pomerne dobre napodobniť pomocou malého počtu kruhov, namiesto uloženia súradníc všetkých bodov.

Môžeme to použiť pre skutočné dáta? No, mohli by sme! V skutočnosti, tu máme ďalší dátový formát s názvom SVG, ktorý pravdepodobne vykonáva dobrú prácu pre typy tvarov, ktoré máme tendenciu vytvárať. Takže v tejto chvíli je to naozaj len pre tvorenie skvelých gifov.

Existuje však aj iný typ vizuálnych údajov, ktoré využívajú Fourierovu transformáciu.

JPEGs

Vedeli ste, že Fourierove transformácie sa dajú použiť aj na obrázky? V skutočnosti ich používame stále, pretože takto fungujú súbory JPEG! Na obrázky aplikujeme rovnaké princípy - niečo rozdelíme do zväzku sínusových vĺn a potom ukladáme iba tie dôležité.

Teraz, keď sa zaoberáme obrázkami, potrebujeme iný typ sínusovej vlny. Potrebujeme niečo, čo bez ohľadu na to, aký obrázok máme, môžeme pridať, aby sme sa dostali späť k nášmu pôvodnému obrázku.

Aby sme to mohli urobiť, každá z našich sínusových vĺn bude tiež obrázkom. Namiesto vlny, ktorá je čiarou, máme teraz obrázky s čiernymi a bielymi sekciami. Na vyjadrenie veľkosti vlny, bude mať každý obrázok viac alebo menej kontrastu.

Môžeme ich tiež použiť na reprezentáciu farieb rovnakým spôsobom. Ale začnime s čiernobielym obrázkom. Na zobrazenie bezfarebných obrázkov potrebujeme niekoľko obrázkov horizontálnych vĺn,

spolu s niekoľko obrázkami zvislých vĺn.

Samotné iba vodorovné a zvislé obrázky nestačia na to, aby sme ich zložením dostali obrázky, ktoré chceme získať. Potrebujeme tiež nejaké ďalšie, ktoré získame vynásobením týchto dvoch jednotiek.

×
=

Tu sú všetky obrázky, ktoré potrebujeme, pre získanie akéhokoľvek obrázka 8x8.

Ak vezmeme tieto obrázky, upravíme ich kontrast na správne hodnoty a potom ich zložíme, môžeme vytvoriť akýkoľvek obrázok.

Začnime týmto písmenom „A“. Je dosť malé, ale musí byť malé, inak skončíme s príliš mnohými dodatkovými obrázkami.

Keď pridávame čoraz viac z týchto obrázkov, približujeme sa do niečoho, čo sa stáva viac a viac podobné originálnemu obrázku. Myslím si, že sami uvidíte postup, pretože už s niekoľkými z nich dostaneme dobrú aproximáciu.

Pre skutočné obrázky JPEG treba už len niekoľko ďalších detailov.

Obrázok sa rozdelí na kúsky 8x8 a každý kúsok sa rozdelí osobitne. Na určenie toho, ako svetlý alebo tmavý je každý pixel, použijeme množinu frekvencií a potom ďalšie dve množiny pre definovanie farieb, jednu pre červeno-zelenú a druhú pre modro-žltú. Počet frekvencií, ktoré používame pre každý kúsok, určuje kvalitu JPEG.

Toto je skutočný obrázok JPEG, priblížený, aby sme mohli vidieť podrobnosti. Keď sa hráme s úrovňou kvality, môžeme vidieť, ako tento proces prebieha.

Zhrnutie

Zhrňme teda:

A to je len vrchol ľadovca. Fourierova transformácia je mimoriadne silný nástroj, pretože rozdelenie vecí na frekvencie je také zásadné. Používa sa v mnohých oblastiach vrátane návrhu integrovaných obvodov, pre signály mobilných telefónov, zobrazovanie magnetickou rezonanciou (MRI) a aj v kvantovej fyzike!

Otázky pre zvedavých

Preskočil som tu väčšinu matematických vecí, ale ak vás zaujímajú základné princípy fungovania, tu sú niektoré otázky, ktoré môžete použiť na usmernenie svojho bádania:

Ďaľšie "čítanie"

Ak sa chcete dozvedieť viac, tu si môžete pozrieť niektoré naozaj dobré zdroje:

Interaktívny sprievodca po Fourierovej transformácii
Skvelý článok, ktorý sa viac venuje matematike toho, čo sa deje.

Ale čo je Fourierova transformácia? Vizuálny úvod.
Skvelé YouTube video od 3Blue1Brown, ktoré tiež vysvetľuje matematiku Fourierových transformácií z audio perspektívy.

Príbeh matematiky a umenia: Vytvorenie vizualizácie harmonických kruhov Fourierovej série
Ďalší článok, ktorý vysvetľuje, ako môžete pomocou epicyklov nakresliť cestu, je vysvetlený z pohľadu lineárnej algebry.

Fourierova transformácia (Wikipedia EN) A samozrejme, článok Wikipedia je tiež celkom dobrý.

Fourierova transformácia (Wikipedia SK) Po Slovensky už nie tak dobrý.

Autor

Som Jez! Na plný úväzok pracujem vo vyhľadávacej spoločnosti v oblasti Bay Area a vo svojom voľnom čase rád robím hry a interaktívne veci, ako je táto!

Táto webová stránka je open-source, zdrojový kód si môžete pozrieť na GitHub! Ak máte akúkoľvek spätnú väzbu alebo sa chcete niečo opýtať, neváhajte a pošlite mi e-mail na adresu fourier [at] jezzamon [dot] com, alebo vystrelte tweeta na Twitter.

Ak chcete vidieť viac mojej práce, pozrite sa na moju domovskú stránku a ak chcete vidieť, čo budem robiť ďalej, môžete sledovať môj účet na Twitter, @jezzamonn!