510 likes | 852 Views
Fraktali. Kaj je fraktal. Fraktal je geometrični konstrukt, za katerega velja pri različnih nivojih podrobnosti samopodobnost. . Nekaj o kompleksnosti. Nekaj o kompleksnosti (2).
E N D
Kaj je fraktal Fraktal je geometrični konstrukt, za katerega velja pri različnih nivojih podrobnosti samopodobnost.
Nekaj o kompleksnosti (2) V ilustracijo poglejmo spodnja dva grafa. Že po 40 iteracijah se zelo razlikujeta, čeprav je bil njun začetni potek navidezno enak.
Teorija kaosa Teorija kaosa temelji na tem, da lahko majhne spremembe povzroče velika nihanja. Res je sicer, da ne moremo napovedovati natančnega stanja nekega sistema, lahko pa modeliramo splošno obnašanje takega sistema. Lorenz je študiral sisteme enačb.Tako je za področje fluidne dinamike uporabil naslednji poenostavljeni sistem enačb: dx/dt = delta * (y - x)dy/dt = r * x - y - x * z dz/dt = x * y - b * z Pri tem je Lorenz oporabil naslednje parametre: delta = 10 r = 28 b = 8/3 Diferencialne enačbe - kaos Demo Kaos in fraktali - nihalo Demo Kantorjeva množica Lorenzov atraktor Demo
Lastnosti fraktalov Ena od lastnosti je samopodobnost oziroma ponavljanje vzorcev pri vseh povečavah. Druga tipična lastnost je neskončna kompleksnost podrobnosti. Formalna definicija fraktala uvaja še pojem fraktalske dimenzije.
Samopodobnost fraktalov • Deli so pomanjšane verzije celotnega objekta • Za dele delov uporabljajmo enake povečave • Za dele delov uporabljajmoi različne povečave • Statistična samopodobnost • na delih uporabimo naključne variacije • Drevesa, grmi, druga vegetacija Samopodobnost (Mandelbrot) Video Samopodobnost (Lorenz) Video Samopodobnost (Mandelbrot) Video
Fraktalska dimenzija • D=fraktalska dimenzija • Količina spremembe v strukturi • Merilo htrapavosti ali fragmentacije objekta • majhna d – manj nazobčano • Velika d – bolj nazobčano • s= faktor pomanjšanja (scaling factor) • n število delov v razdelitvi • d=log(n)/log(1/s) Fraktalska dimenzija (Anglija) Demo Fraktalska dimenzija (Kochova snežinka) Demo
Fraktalska dimenzija Točka: D = 0, N=1, s=1/2 Črta: D = 1, N=2, s=1/2 Kvadrat: D = 2, N=4, s=1/2 N = (1/s)D log N = D log (1/s) D = log(N)/log(1/s) Kocka: D = 3, N=8, s=1/2 • Črto razdelimo v s enakih segmentov, dobimo n črt: n=s • Razdelitev kvadrata: Če stranice delimo na s manjših stranic, dobimo • n=s2majhnih kvadratov • Razdelimo kocko, dobimo • n=s3malih kockic
Dimenzija fraktala: primeri N=2 s=1/3 D = log 2/log 3 D = .6... N=4 s=1/3 D = log 4/log 3 D = 1.262 • Kochova snežinka • Po delitvi s 3 imamo 4 segmente • D=log4/log3 = 1.262
Vsako stranico delimo z 2 Dobimo 4 trikotnike Obdržimo 3, torej je n=3 Iz enega trikotnika smo dobili 3 s=2 (2 nova segmenta iz enega starega) Fraktalska dimenzija D=ln(3)/ln(2) = 1.585 Dimenzija fraktala Sierpinski
Dimenzija fraktala "kocka" • Uporabimo algoritem • Vsako stranico delimo s 3 • Izločimo srednjo kocko na vsaki strani • Izločimo kockico v sredini • Kakšna je torej fraktalska dimenzija? • Vsako stranico smo delili s 3. Torej s = 3, • Dobili smo 27 kockic, vendar smo 7 izločili: n = 20 • Fraktalska dimenzija: ln(20)/ln(3) = 2.727
Newtonov fraktal Video Demo
Mandelbrotov fraktal Mandelbrotova množica je graf vseh kompleksnih števil c, ki ne zbeže v neskončnost, če iteriramo funkcijo z= z 2 + c, Za začetno vrednost z vzamemo: z =0 + 0i.
Juliajeve množice kakšna je razlika med Julijajevimi množicami in Mandelbrtovo množico? Tako pri Mandelbrotovi množici kot pri Julijajevih množicah uporabljamo isto iterativno funkcijo: zn+1= zn ^ 2 - c pri čemer sta z in c kompleksni števili oblike a + ib in i je kvadratni koren od -1. Razlika je v uporabi formule. Vsaki točki kompleksne ravnine ustreza ena Julijajeva množica. Tako lahko na mandelbrotovo množico gledamo kot na "indeks" Julijajevih množic. vsaki točni v Mandelbrotovi množici ustreza ena Julijajeva množica. Juliajeva množica je graf vseh kompleksnih števil z, ki ne končajo v neskončnosti, če iteriramo f(z) -- > z 2 + c, pri čemer je c konstantna. Video
Demo Dragon Ply orbit Demo Demo Gingerbreadman Hopalong orbit Demo Popcorn Demo IFS – iterirani funkcijski sistemi IFS pomeni "Iterated Function System." Fraktale tega tipa dobimo z uporabo številnih funkcij. Lahko so večdimenzijski, čeprav jih najbolj pogosto rišemo v 2D. IFS fraktal je unija več kopij samega sebe, pri čemer je vsaka kopija transformirana z neko funkcijo (odtod tudi ime funkcijski sistem). Funkcije običajno krčijo, kar pomeni, da točke približujejo drogo drugi oziroma da delajo manjše like. Zato je oblika IFS fraktala sestavljena iz manjših kopij, ki se lahko tudi prekrivajo. Vsaka kopija pam je spet sestavljena iz še manjših kopij, tja do neskončnosti. In to je izvor samopodobnosti takih fraktalov. Pri IFS fraktalih se izkaže, da izbira začetne točke ne vpliva preveč na obliko fraktala. Tako lahko fraktal definiramo kar s pravili za tvorbo naslednjih točk, lahko pa vključimo še nekaj naključnosti.
Kako tvorimo trikotnik Sierpinskega Korak 1: Narišemo enakostraničen trikotnik. Stranice razpolovimo in srednje točke povežemo. Koliko enakostraničnih trikotnikov dobimo? Pobarvamo zunanje trikotnike in srednjega tako izločimo (naredimo luknjo).
Kako tvorimo trikotnik Sierpinskega Korak 2: V vsakem od polnih trikotnikov postopek ponovimo: razpolovimo stranice, povežemo srednje točke in izločimo centralni trikotnik (dobimo 3 nove luknje).
Drevesa Demo L – sistem fraktali Demo
L – sistem fraktali Fraktale delamo z odseki črt (line segments) in uporabo primernih pravil. Ta pravila vsebujejo ukaze, kot: draw forward, move forward, turn by a specified angle, itd. Začetni ukaz zapišemo z nizom, ki mu pravimo aksiom. Aksiom lahko naslavlja dodatne ukaze (nize), ki so sami spet lahko rekurzivni. Aksiom izvajamo zato rekurzivno. V vsaki iteraciji zamenjamo vsako črto z vsemi ukazi iz aksioma.
L system fraktali Definirajmo nekaj ukazov, tvorimo aksiom in poglejmo, kaj smo "ustvarili": Kot n Rotacija za 360/n stopinj + Rotacija v obratni smeri od urinega lazalca - Rotacija v smeri urinega kazalca F Rišemo naprej (Draw forward) G Premik naprej (Move forward) Cnn Izbira barve nn <nn Barvo povečamo za nn >nn Barvo zmanjšamo za bnn Z naslednji pravili bi dobili Kochovo snežinko Kot 6 Aksiom: F--F--F pravilo zamenjave: F=F>1+F--F+F Razlaga: Vzamemo aksiom "F-F-F" in v njem vsak F nadomestimo z " F>1+F--F+F" Zato v naslednji iteraciji dobimo: "F>1+F--F+F - F>1+F--F+F -F>1+F--F+F Spet vse F zamenjamo z "F>1+F--F+F" in dobimo naslednjo iteracijo...
L system fraktali: še en primer Z naslednjimi pravili bi dobili "zmaja" (dragon). Kot 8 Aksiom: FX Pravila zamenjave v vsaki iteraciji: F=>1 Y=+FX--FY+ X=-FX++FY-
Drevesa 2 Demo L system fraktali: tvorba drevesa
Kvaternionski fraktali Mandelbrotova množica in vrsta drugih fraktalov temelji na uporabi kompleksnih števil, ki imajo dve komponenti in jih lahko prikažemo v dveh dimenzijah. Kvaternioni so spremenljivke, ki imajo 4 komponente. Prikažemo jih lahko v 4 dimenzijah. Seveda ne moremo prikazati 4 dimenzionalnega fraktala, lahko pa prikažemo njegovo 3 dimenzionalno "rezino" Video Video
Kvaternionski fraktali Goblin Park The fractal sculpture was created from two Fractal Zplot quaternions, stone texture from a Dofo-Zon Elite fractal, and the trees behind the river from l-system fractals by L-System and Fractal Zplot. The rest of the scene and rendering by Vue d'Esprit.
Kvaternionski fraktali Dancers A fractal sculpture using two versions of a complex quaternion fractal by QuarSZ; scenery and rendering by Vue d'Esprit.
Uporaba fraktalov • Teksture • Pokrajine • Posebni efekti • Fraktalska glasba • Fraktalska kompresija
Marmor Ken Perlin, 1985
Fraktalske gore • Displacement mapof meshed plane • Can also be formed using midpoint displacement Ken Musgrave Gunther Berkus via Mojoworld
Oblaki - voda Gunther Berkus via Mojoworld
Ogenj Ken Musgrave
Planeti Ken Musgrave
Mesečev vzhod Ken Musgrave
Fraktalska glasba Fraktalsko glasbo lahko dobimo tako, da s šumom, ki ga predstavlja, primerno popravimo višino tona nekega glasbila, lahko pa z nekim drugim šumom tudi vplivamo na dolžino posameznih not. Audio Audio Audio Audio Audio
Primer Mandelbrotove uglasbitve Najprej izračunamo del Mandelbrotove množice. Matematične podatke interpretiramo kot podatke midi. Večje, kot je število iteracij, višji je na primer ton. Audio
Zakaj fraktalska kompresija slik • Smiselne so raziskave različnih tehnik kompresije • Izkorišča podobnosti znotraj slike • Napredna interpolacija podrobnosti • Rezultirajoča slika bo imela optimalno resolucijo, podobno originalu in ne bo kockasta. • Visoka teoretična stopnja kompresije • Hitri časi dekompresije
Matematično ozadje • Iščemo množico transformacij, ki preslikajo sliko samo vase. • Temelji na teoremu "Collage" • če je razlika v napaki med ciljno sliko in transformacijo te slike, je transform (preslikava) ekvivalentna predstavitev te slike.
Kako deluje?-kodiranje • vzamemo začetno sliko in jo razdelimo v manjše kvadratke, ki se ne prekrivajo. Pravimo jim "starševski bloki”. • Vsak starševski blok razdelimo na 4 nove bloke – otroke. • Vsakega od otrok primerjamo z množico vseh blokov velikosti starša. Compare each child block against a subset of all possible overlapping blocks of parent block size. • Velikost starša moramo zmanjšati, če hočemo to primerjati. • Ugotavljamo, kateri od večjih blokov ima najmanjšo (in dovolj majhno) razliko v primerjavi s tem blokom- otrokom. • Računamo "grayscale transform", da uskladimo nivoje intenzivnosti med večjim blokom in blokom-otrokom. Tipično uporabimo za usklajevanje nivoje sivin afino transformacijo (w*x = a*x + b).
Kako to deluje? – kodiranje • Zgornji levi blok- otrok je zelo podoben zgornjemu levemu starševskemu bloku. • Izračunamo afino transformacijo. • Shranimo lokacijo starševskega bloka (bloka, ki ga transformiramo), komponente afine transformacije in obravnavani blok-otrok. • To ponovimo z vsakim blokom-otrokom. • Veliko primerjav in računanja. • 256x256 originalna slika • 16x16 velikost starševskih blokov • 241*241 = 58,081 primerjav blokov
kako to deluje?- Dekodiranje • Beremo blok-otrok in položaj transformiranega bloka ter podatke o transformaciji in velikosti. • Začnemo s prazno sliko, ki je po velikosti enaka originalni sliki • Za vsak blok-otrok uporabimo pomnjene transforme in primerno transformiramo pšodani transformiran (starševski) blok. • Piksle bloka-otroka prekrijemo s piksli transformiranega bloka • Postopek ponavljamo, dokler ne dosežemo sprejemljive kvalitete slike.
kako to deluje? – dekodiranje - primer Prva iteracija Začetna slika za dekodiranje Originalna slika Druga iteracija Peta iteracija Deseta iteracija
Fraktalska kompresija slik - povzetek • Fraktalska kompresija je zelo kompleksna tehnika. • Temelji na transformacijibitne slike v vektorsko matematično predstavitev z uporabo iterativnih funkcijskih sistemov. • Fraktalska kompresija je asimetrična, saj je faza kompresije precej počasnejša od dekompresije. Dekompresija je v bistvu kar algoritem upodabljanja. • Prednosti freaktalske kompresije so dobro razmerje zgoščevanja, ki terja le majhno poslabšanje kvalitete slike ter zmožnost povečevanja slike (tako, kot to velja za vektorske formate) brez dodatnega šuma ali izgube informacije.
Možne izboljšave • Šibka točka je čas za kodiranje • Možne pospešitve • Razvrstitev transformacijskih blokov glede na povprečno intenzivnost in varianco • Iskanje le po blokih s podobno strukturo • Zmanjševanje števila blokov-otrokov • Izboljšanje kvalitete kompresije s pomočjo • Štiriških dreves, HV dreves • Rotacije transformacijskih blokov med primerjavo • Izboljšanimi transformi "grayscale"