Počítačová grafika - 5. cvičení Radek Janoštík Univerzita Palackého v Olomouci 22.10.2018 Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 1 / 10
Reakce na úkoly Přehnané násobení B = (((val&3) * 64 * 32) for row in arr for val in row) Binární formát Obtížnost? Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 2 / 10
Diskrétní Fourierova transformace (DFT) Obraz (signál) je posloupnost stejně vzdálených vzorků: I = I 0,..., I, opakující se s periodou DFT ze vzorků I n je posloupnost komplexních čásel F n F n = I k W nk pro 0 n 1 W = e i2π = cos( 2π ) + isin( 2π ) Příklad: Vypočítejte F n řady 1, 2, 2, 3, 4, 4, 6, 8 Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 3 / 10
Inverzní Diskrétní Fourierova transformace (IDFT) Inverzní výpočet ze sekvence F 0,..., F I n = 1 F k W nk pro 0 n 1 Až na škálování a znaménka stejný výpočet Příklad: Vypočítejte I n z přechozí F n Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 4 / 10
Rekurzivní výpočet DFT/IDFT - motivace Výpočet dosazením do vzorce je časově náročný Vyžaduje 2 komplexních násobení a ( 1) komplexních sčítání Pro praktické použití nevhodné Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 5 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = I k e i2πnk (4) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = (/2) 1 I k e i2πnk = (/2) 1 I 2k e i2πn2k + I 2k+1 e i2πn(2k+1) (1) (4) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = (/2) 1 I k e i2πnk = = (/2) 1 (/2) 1 I 2k e i2πn2k + i2πnk (/2) 1 I 2k e 2 + I 2k+1 e i2πn(2k+1) (1) i2πnk I 2k+1 e 2 e i2πn (2) (4) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = (/2) 1 I k e i2πnk = = (/2) 1 (/2) 1 I 2k e i2πn2k + i2πnk (/2) 1 I 2k e 2 + I 2k+1 e i2πn(2k+1) (1) i2πnk I 2k+1 e 2 e i2πn (2) = F e n + e i2πn F o n (3) (4) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = (/2) 1 I k e i2πnk = = (/2) 1 (/2) 1 I 2k e i2πn2k + i2πnk (/2) 1 I 2k e 2 + I 2k+1 e i2πn(2k+1) (1) i2πnk I 2k+1 e 2 e i2πn (2) = F e n + e i2πn F o n (3) = F e n + W n F o n (4) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT DFT posloupnosti délky = 2 m může být nahrazena součtem dvou DFT délky /2 (součet DFT vzorků s lichým a sudým indexem): F n = (/2) 1 I k e i2πnk = = (/2) 1 (/2) 1 I 2k e i2πn2k + i2πnk (/2) 1 I 2k e 2 + I 2k+1 e i2πn(2k+1) (1) i2πnk I 2k+1 e 2 e i2πn (2) = F e n + e i2πn F o n (3) = F e n + W n F o n (4) Kde F e n je (/2) členná posloupnost sudých prvků a F o n je (/2) členná posloupnost lichých prvků. Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 6 / 10
Rekurzivní výpočet DFT/IDFT Dle definice DFT: F n+ = F n tedy F n je periodická s periodou Tedy platí: F e n+/2 = F e n (5) F o n+/2 = F o n (6) W n+/2 = W n pro 0 n /2 (7) Tedy můžeme vypočítat jen polovinu posloupnoti a zbytek dopočítat dle: F n = F e n + W n F o n pro 0 n /2 (8) F n+/2 = F e n W n F o n pro 0 n /2 (9) (10) Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 7 / 10
Rekurzivní výpočet DFT/IDFT - Příklad Dle Rekurzivního předpisu vypočítejte příklad č. 1 Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 8 / 10
Úkol (1/1) aprogramovat DFT/IDFT pro jednorozměrnou posloupnost pomocí přímého výpočtu ze vzorce Bonusový úkol (*žolík) aprogramovat Rekurzivní DFT Experimentálně porovnat časovou náročnost Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 9 / 10
Doporučené video o FT https://www.youtube.com/watch?v=spupyf58by Radek Janoštík (Univerzita Palackého v Olomouci) Počítačová grafika - 5. cvičení 22.10.2018 10 / 10