less_retarded_wiki

main page, file list, single page HTML, source, report, wiki last updated on 05/28/23

Noise

Noise in general is an undesirable signal that's mixed in with useful signal and which we usually try to filter out, even though it can also be useful, especially e.g. in procedural generation. Typical example of noise is flickering or static in video and audio signals, but it can also take a form of e.g. random errors in transferred texts, irrelevant links in web search results or imperfections in measuring of economic data. In measurements we often talk about signal to noise ratio (SNR) -- the ratio that tells us how much noise there is in our data. While in engineering and scientific measurements noise is almost always something that's burdening us (e.g. cosmic microwave background, the noise left over from the Big Bang, may interfere with our radio communication), in some fields such as computer graphics (and other computer art) or cryptography we sometimes try to purposefully generate artificial noise -- e.g. in procedural generation noise is used to generate naturally looking terrain, clouds, textures etc.

 xxxx x    x  x    x  xx x xxx   x x x
 x        xxx  x x  x   xxxxxx     x
x xxxx x xxxx x  xxx  xx xxx xx    xxx
 xxx   xxx            xx  x xxx  x
x  x x  xxx x xxx  x x x xxx     x
  x xxx xx xxxxxx  xxx x xx x xx x
xxxxx x x x x x     x  xxxx xxx   x  x
xxxx    x  x  x xx  xx   xx  x    xx
      x  xxx  xxx x x   x xx  xx xxx
     xx xx  xxx x x xxx xxxxx  xxx x x
x  x xx x xxxx x xx xxx  x  x x  xx xx
 xx  xx    xxx x x xx  x    xx xx xx
   xx xx    x x x x xxx    xx   x xx x
xxx xx     xxxx x xx xx xxx x  x  x xx
xx x   xxx  x  xxx    xx x  x x     x
x x  xx x    x xxxxxx   x x  xxx
x      xxx     x x x x x x xx xxxxxxxx
x  xx x x xx x  xxxxxxxxx xxx  xxx  xx
x  xxxx xxx   x       x  x   xxx xxxxx
    xx   x  x x xxxxxx   x  xxx xxx

2D binary white noise

Artificial Noise

In computer science, especially e.g. in computer graphics or audio generation, we often want to generate artificial noise that looks like real noise, in order to be able to generate data that look like real world data. Noise may serve as a basis (first step, random initial state) for generating something or it may be used to distort or modulate other data, for example when drawing geometrical shapes we may want them to look as if written by hand in which case we want to make them imperfect, add a bit of noise to an otherwise perfect shape a computer would create. Adding noise can help make rendered pictures look more natural, it can help us model human speech that arises from noise created by our vocal cords, it can help AI train itself to filter out real life noise etc.

Normally we don't want our noise to be completely random but rather pseudorandom so that our programs stay deterministic. Imagine for example we are generating terrain heightmap based on a 2D noise -- if such function was truly random, the terrain in a certain place would be different every time we returned to that place again, but if the noise is pseudorandom (seeded by the position coordinates), the terrain generated at any given coordinate will be always the same.

There are different types of noise characterized by their properties such as number of dimensions, frequencies they contain, probability distribution of the values they contain etc. Basic division of noises may be this:

           ..----..  
        .''        ''.  
    ..''              '.                      ..... 
''''                    '                 ..''     '''--..    
                         '.            .''                ''..    
                           '.       ..'                       '''     
                             ''...''                           

                             octave1
                                +
       ....                                    ...
..--'''    ''.        ..'''...              .''   ''-..    ..--''
              ''---'''        '''''---...-''           ''''

                             octave2
                                +

''-....----'''-...-'''-...-'''''''-----...-'''--..-'''-....---'''

                             octave3
                                =
           ..
        .''  '.       
      -'       ''.-'-.  
... ..                '                      -'''--...
   '                   ''                   '         .       
                         '-.              -'           -.. ..  .'   
                            -.          -'                '  ''      
                              '...-.--''                        
                                  
                           fractal noise


1D fractal noise composed of 3 octaves


All content available under CC0 1.0 (public domain). Send comments and corrections to drummyfish at disroot dot org.