Protseduuriline müra

**Protseduurilise müra** (inglise keeles *procedural noise*) all mõeldakse arvutigraafikas juhuslikku ja struktureerimata mustrit. Matemaatiliselt võib sellest mõelda kui 𝑛-kohalisest deterministlikust funktsioonist 𝑓, mis kujutab iga 𝑛-kohalise reaalarvude vektori mingiks juhuslikuks reaalarvuks. 

Kuigi osad mürad on juhuslikud, siis enamik mürasid kasutab arvude genereerimiseks mingit pseudojuhuslikku arvu, mida nimetatakse seemneks. Selle tõttu on võimalik täpselt sama juhuslik müra saada ühe kindla seemnega. See on kasulik kohtades, kus on vajadus luua samasuguseid ulatuslikke detaile mitmeid kordi ilma kindla struktuurita. Müra kasutus on laialt levinud pilditöötluses ja modelleerimises, kuid tihti kasutatakse seda ka videomängudes sisu juurde loomisel (arvuti juhuslik käitumine, erinevate mängumaailmade genereerimine jms).

## Protseduurilised mürafunktsioonid
### Ülevaade
Mürafunktsioone hakati kasutusele võtma 1980. aastatel, et asendada objektidele lisatavad mälurohked pildid, kuna tol ajal ei olnud arvutil piisavalt mälu ning taheti luua reaalsusega võimalikult sarnaseid tekstuure. Esmalt loodi väärtusmürasarnaseid algoritme, kuid need meenutasid rohkem udukogusid. 1985. aastal avaldas Ken Perli, kes oli gradientmüra alal üks esimesi ja andis esimese detailse kirjelduse gradientmürast, mida teatakse tänapäeval Perlini mürana. Ken Perli eesmärk oli muuta ümber arvutigraafika frustreeriv "masinlik" vaade.

Mürafunktsioone võime liigitada kolme kategooriasse:
* väärtusmüra,
* gradientmüra,
* hõredatel konvendimuutustel põhinev müra või punktidel põhinev müra.

### Gradientmüra
Gradientmürade ühine element on võre või võrk, mis jagab ala väiksemates sektsioonides (tavaliselt ruutudeks, kuid mitte tingimata). Gradientmüra puhul määratakse igale võrestiku tipule pseudojuhuslik gradient, mille järgi interpoleeritakse lineaarselt vahepealsed väärtused. Gradient on mitme muutuja funktsiooni 𝑓 kiireima kasvamise suunda ja kiirust antud punktis iseloomustav vektor. Algoritm liigub mööda ruudustikku, mis tekitab mürafunktsiooni igas ruudus. Tavaliselt tundub see müra "udune", nii et seda protsessi korratakse mitu korda, kasutades väiksemaid võrke, mis asetsevad eelmise kihi peal, et parandada määratlust. Igal kihil on kitsaribaline sagedusala, mis on proportsioonis ruudukujulise suurusega. Lisades uusi väiksemaid võrgukihte, suurendame müra kõrget sagedust ja parandame selle määratlust. Igat kihti kutsutakse oktaaviks. Peamised (ja peaaegu ainsad) üldkasutatavad gradientmüra algoritmid on Perlini müra ja selle derivaadid (simpleksalgoritmina).

### Väärtusmüra
Nagu gradientmüral on ka väärtusmüral ühiseks elemendiks kas võre või võrk. Väärtusmüra erinebki põhiliselt ainult selle poolest, et gradientmüra puhul määratakse igale võrestiku tipule pseudojuhuslik gradient, aga väärtusmüral on selle asemel skalaarsed väärtused. Väärtusmüra tagastab mürafunktsioon interpoleeritud numbri, lähtudes ümbritsevate võre punktide väärtustest.

### Hõredatel konvendimuutustel põhinev müra
Hõredatel konvendimuutustel põhinev müra tekib juhuslikult ja suvaliselt asetatud ning kaalutud punktide summana. Hõredatel konvendimuutustel põhinev müra kõige tuntumad esindajad on hõre konvolutsioonimüra, punktmüra ja Gabori müra.

## Viited