A method and a device for tiling fractal noise
The method addresses the limitations of existing noise generation by enabling the creation of customizable n-dimensional fractal noise with controlled geometric patterns, offering improved efficiency and flexibility in pattern control.
Patent Information
- Application Number
- PCT/EP2024/058174
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-03-26
- Publication Date
- 2025-10-02
AI Technical Summary
Existing noise generation methods, such as Perlin and Simplex noise, produce artificial-looking noise, are computationally demanding and difficult to tune for specific applications, lacking efficient methods for generating fractal noise with hidden geometric patterns.
A method for generating n-dimensional tiling fractal noise that allows users to specify and create complex pseudorandom patterns by recursively combining tilings of random values with controlled rotation and translation, using a customizable algorithm that includes defining tiling parameters, rescaling, normalization, stacking, and mapping functions to produce organic and natural-looking patterns.
The method enables the generation of highly customizable and computationally efficient fractal noise, suitable for embedded systems, with improved control over noise patterns and reduced computational demands.
Smart Images

Figure EP2024058174_02102025_PF_FP_ABST
Abstract
Description
[0001] A METHOD AND A DEVICE FOR TILING FRACTAL NOISE
[0002] Field of the invention
[0003] The present invention belongs to the field of image data processing or generation, more precisely to the field of general-purpose image data processing. The invention relates to a method for tiling fractal noise. The invention also relates to a computer program comprising executable instructions for performing the method as well as to a computer readable medium comprising said computer program.
[0004] Background of the invention and the technical problem
[0005] Image noise is random variation of brightness or colour information in images and is usually an aspect of electronic noise. It can be produced by the image sensor and circuitry of a scanner or a digital camera, it can also originate in film grain and in the unavoidable shot noise of an ideal photon detector, or it can be induced or generated externally.
[0006] Perlin noise is a type of gradient noise developed by Ken Perlin in 1983. Perlin noise is commonly implemented as a two-, three- or four-dimensional function, but can be defined for any number of dimensions. An implementation typically involves three steps: defining a grid of random gradient vectors, computing the dot product between the gradient vectors and their offsets, and interpolation between these values. It has many uses, including but not limited to: procedurally generating terrain, applying pseudo-random changes to a variable, and assisting in the creation of image textures. Patent US6867776B2 discloses a method for generating images comprising the steps of: introducing information into a computer from which the images are produced; - producing the images with texture that do not have visible grid artifacts with the computer using a bit-manipulation to generate a six bit quantity from an integer lattice point i,j , k, where the six bit quantity is defined as a lower six bits of a sum: b(i,j,k,0)+b(j,k,i,1 )+b(k,i,j,2)+b(i,j,k3)+b(j,k,i,4)+b(k,i,j,5)+b(i,j,k,6)+b(j,k,i,7) define b(i,j, k, B); patternlndex=4*bitB(i)+2*bitB(j)+bitB(k) return bitPatterns[patternlndex] where B is 0 or a positive integer;
[0007] - generating a gradient direction using the six-bit quantity; and
[0008] - displaying the images on a display.
[0009] Fractal noise is a customizable way of creating visual noise, which is considered a successor of Perlin noise, wherein fractal noise is a signal or process with a frequency spectrum such that the power spectral density (power per frequency interval) is inversely proportional to the frequency of the signal.
[0010] Some of the disadvantages of current methods for noise generation are that the generated noise looks to artificial, that the algorithms for noise generation are difficult to tune for specific applications and that some algorithms, particularly for Perlin and Simplex noise, are computationally demanding involving complex transformations and computations. The aim of the present invention is thus to address the disadvantages of known solutions and to provide an efficient method for generation of fractal noise with hidden geometric patterns that will allow improved sample control.
[0011] Prior art
[0012] Gustavson et al. (2022; Journal of computer graphics techniques, 11 , 1 ; available at https: / / jcgt.org / published / 0011 / 01 / 02 / paper.pdf) describe Simplex or Perlin noise, which can be tiled. As mentioned above, Simplex and Perlin noise have a different operational principle as the fractal noise, as for generation of noise scalar products on a pre-defined mesh are calculated, whereas fractal noise does not need this. Description of the solution to the technical problem
[0013] The invention aims to solve problems of known methods outlined above. The technical problem is solved as defined in the independent claims, wherein preferred embodiments are defined in dependent claims.
[0014] The present invention relates to a method that enables generation of complex pseudorandom patterns / noise in n-dimensional space. The user can specify and create a highly specific n-dimensional noise generator, which will output tiling fractal noise. The n-dimensional patterns are generated by recursively combining a certain number of tilings of random values of the same type, for example Quadrilateral, Hexagonal, Voronoi, outputs of other noise generators, but with different translation, rotation or length scales. The algorithm also allows for the generation of geometric patterns without randomness. In this case, rotation and translation is not random, i.e. tiling is always performed with the same orientation, but with different scale, and wherein individual tiles have a pre-defined value (not randomly generated).
[0015] The essence of the invention is a method for tiling fractal noise, wherein the method comprises a step of introducing information into the computer from which the images are produced and steps of producing the images with texture that do not have visible grid artifacts with the computer. Atiling fractal noise pattern is created using the method for tiling fractal noise, which is essentially an algorithm with appropriate functions, their parameters and a random number generator to create the tiling fractal noise generator which will output the tiling fractal noise patterns. The steps in the tiling fractal noise algorithm are: a) defining Tiling parameters, which are principal noise length scale, tiling type (such as Quadrilateral tiling, Hexagonal tiling, Voronoi Tessellation, outputs of other noise algorithms such as Perlin Noise), and / or noise length scale, and optionally rescaling “Tiling parameters”, by a “rescaling function” based on the rescaling parameters, i.e. the parameters of the rescaling function, and the iteration number “k”, wherein kmax is the maximal number of iterations defined by the user, b) the defined and / or rescaled “tiling parameters” obtained in step a) or unsealed tiling parameters are passed into the “tiling function” (b) along with the “mesh” on which the noise is generated, wherein said mesh can be an n-dimensional grid, and wherein the random number generator (RNG) is arranged to generate the random numbers for each tile in the tiling, and wherein the tiling function creates a tiling based on the tiling parameters and each tile in the tiling will is assigned a random number from the RNG with a certain “seed”, which can be specified by the user, and projected onto the mesh thus leading to resulting tiling, and wherein a random rotation and translation of the tiling may be performed, wherein random rotation and translation leads to a more organic / natural the final pattern, c) The tiling obtained in step b) is passed into a “normalization function” (c) along with normalization parameters, wherein said Normalization Function is arranged to normalize / rescale the tiling to a certain range of values, i.e. an interval which is suitable for the stacking function, d) The “normalized tiling” and “stacking parameters” are passed into the “stacking function” arranged to combine the “normalized tiling” of this iteration with the result of the previous iteration (i.e. different iterations of the normalized tiling pattern together) in order to generate the final output, wherein in the first iteration the normalized tiling is left unchanged, and wherein the Stacking Function takes as input the Normalized Tiling, user-specified Stack Parameters and combines the Normalized Tiling with the results from the previous iterations, e) Steps a-d are repeated in a loop for a “k_max” number of times, where “k_max” is the number of iterations specified by the user, wherein the result of this step is a Tiling Fractal Noise, wherein selection of rescaling, rotating and translating is done in every iteration of / in the loop separately, and the value k increases for 1 until k_max is reached in the final loop iteration, f) The Tiling Fractal noise obtained in step e) is passed into a “mapping function” arranged to map the output to a certain range of values, the so-called mapping parameters, which is an interval inside which the output values will be, wherein the values are broadcasted to a range specified by the “mapping parameters”, typically noise amplitude (TFN will output values in range determined by the noise amplitude), wherein the Mapping Function maps the Tiling Fractal Noise to a certain range of values and returns the Output, g) The result from the previous step (f) is stored or displayed on a device with a suitable display, such as a computer.
[0016] The rescaling in step a) is not necessary, but if the tilings of every iteration are the same the noise pattern will not emerge. In the first step, there is no rescaling, while for other steps step a) may be applied or not. Performing rescaling is decided in every step separately.
[0017] The mesh in step b) is usually composed of points which are equidistant along each of the n-dimensions. In principle the mesh can have a spatially varying density of points, but therefore the final noise will appear more detailed in sections where the mesh is denser. This mesh may be a a point cloud of points of varying density in n-dimensions, a checkerboard, an n-dimensional grid of any type, an irregular or regular triangular grid, etc ...
[0018] In step c), the random values of the tiles are broadcasted to a certain range i.e. [-1 , 1 ] or [0, 1 ]. The normalization function may be any function that transforms numbers from the interval of tiling function values into an interval acceptable for the Stacking function, for example the tiling function generates values inside the interval [0, 1 ] and the stacking function accepts values inside the interval [-1 , 1 ],
[0019] The stacking function in step d) is a function that takes two numbers, for example in interval [-1 , 1 ] and inserts one further number, for example in the interval [-1 , 1 ], which is done for every point on the grid. In general, for the stacking function the following is valid S([a,b], [c,d]) -> [a,b] , where S is the stacking function, mapping from two intervals of real numbers [a, b] and [c, d] into the interval of real numbers [a, b]. The variables a and c are the lower boundaries of the intervals and the values b and d are the upper boundaries of the intervals. In some embodiments, c=a in b=d, which introduces simplicity, while still being mathematically correct. The stacking function may be a sum.
[0020] The loop in step e) can be performed once or more times until k_max is reached. k_max is defined by the user arbitrarily and is any natural number larger than 0.
[0021] Mapping Function applied in step f) is a function arranged to transform values from the interval, for example [0,1 ], inside which the outputs of the stacking function are into an arbitrary interval. Typically, the mapping parameters are minimum and maximum of the interval into which the mapping function transforms the stacking function outputs. Mapping functions can be different functions selected by the user, for example a linear function, a square function, etc. In case of a linear function, the parameters are the minimum and maximum, while for the square function, the mapping parameters are the coefficients of the square function. Alternatively, as a mapping parameter also one number can be selected, with which the output of the stacking function is multiplied.
[0022] The present invention also pertains to a device for generating an image comprising a computer or a processor or any other hardware suitable to perform the abovedescribed method according to the invention. The device further comprises a display for showing generated image or connection means for connecting to an external display adapted for displaying the generated image with tiled fractal noise.
[0023] The invention also relates to a computer program comprising executable instructions for performing the procedure as well as to a computer readable medium comprising said computer program.
[0024] The invention allows the user to create an almost fully customizable noise generator - the user can specify the size, shape and intensity of certain features in the final generated noise pattern. The algorithm allows the user to create a noise generator, ii.e., a combination of the above-described functions, which can generate n- dimensional noise patterns. The generator can be made to be very computationally lightweight, which allows it to be used in embedded systems with relatively small computational resources. The simplicity of the algorithm allows it to be relatively easily implemented with different programming languages.
[0025] Use of the invention is thus possible in the fields of computer graphics, computational geometry, and numerical simulations, particularly for procedural generation of n- dimensional geometry such as terrain, textures, patterns, and initial conditions for numerical simulations and / or conditions / noise generators for artificial intelligence (Al) generative models / generators, such as DALL-E, Midjourney, and similar.
[0026] Brief description of drawings
[0027] The present invention will be described in further detail based on exemplary embodiments, examples, and figures, which show:
[0028] Figure 1 Flowchart of the Tiling Fractal Noise algorithm.
[0029] Figure 2 An exemplary embodiment of the generator formed by the algorithm as shown in figure 1
[0030] Figure 3 The flowchart shown in figure 1 with given functions in each step
[0031] Figure 4 Comparison of different noise profiles with different tilings and tiling parameters.
[0032] Figure 5 Comparison of different noise profiles with the same tiling type and different number of maximum iterations.
[0033] Figure 6 Examples of surfaces generated using Tiling Fractal Noise with different tiling types: a) Voronoi tiling, b) quadrilateral tiling, c) Hexagonal tiling, d) Pelin noise pattern tiling.
[0034] Detailed description of the invention
[0035] Figure 1 shows the flowchart of the method for tiling fractal noise according to the invention, wherein the steps of the method are: a) Rescaling function which takes as input user specified Tiling Parameters and Rescaling Parameters, and outputs the rescaled tiling parameters, b) Tiling Function takes as input the Tiling Parameters, user-specified Mesh and the required number of random numbers from the random number generator (RNG) with a certain seed, wherein the output of the Tiling Function is the tiling, c) Normalization Function normalizes / rescales the tiling to a certain range of values, d) Stacking Function takes as input the Normalized Tiling, user-specified Stack
[0036] Parameters and combines the Normalized Tiling with the results from the previous output of the Stacking function, e) Loop repeats steps from a)-d) and increments the Iteration Number - k until k < k_max then it outputs the Tiling Fractal Noise, f) Mapping Function maps the Tiling Fractal Noise to a certain range of values and returns the Output g) of the TFN algorithm.
[0037] Figure 2 shows construction of a generator of tiling noise, which is based on the algorithm as described above and shown in figure 1 , but with specific functions.
[0038] The rescaling function in step a is defined as ak = ao ■ fk, wherein ao is the initial scaling parameter defining the length scale in the first iteration, ak is the scaling parameter in the k-th iteration, and fkis the scaling factor to the k-th power.
[0039] The tiling function in step b) is based on the mesh defined as a random checkerboard, wherein each field has an assigned random number and each intersection has a random value generated by RNG. The checkerboard may be rotated for a randomly selected angle and / or moved for a randomly selected vector. In figure 2 the numbers on the random checkerboard are inside the interval [0,1 ],
[0040] The normalization function in step c) is defined as Uk = 2 vk -1 , wherein Vk is the output of the tiling function in the k-th step, and Uk is the output of the normalization function in the k-th step.
[0041] The stacking function in step d) is defined as Wk = Uk + Wk-i / max(wk-i), wherein Wk is the output of the stacking function in a current iteration (k-step) and Wk-i is the output of the Stacking function in the previous iteration (k-1 ).
[0042] The mapping function in step f) is defined as output = A Wfinai, wherein A is parameter of the mapping function, i.e. , the multiplication factor, and Wfinai is the output of the stacking function in the last iteration. In step g) the final noise is shown, wherein it has been generated by the functions given above and repeated steps a) to d), wherein this loop is marked as e).
[0043] Figure 3 shows the steps as shown in figure 1 , but with written functions and their sequence.
[0044] Examples
[0045] An example of a simple way of generating a random tiling with random translation and rotation in two dimensions is as follows:
[0046] In the first step we generate a large number of random values in the range [0,1 ] with the Random Number Generator (RNG). We assign a coordinate to each of those points in two dimensions. If the final noise will be displayed in a square 1 by 1 units large, these random coordinates must be generated in a square with a side length of at least sqrt(2) (for good measure). The larger this area is the less we have to be careful with the random translation and rotation steps, but the more computationally expensive the generation is. In the case of quadrilateral tiling the coordinates lie on an equirectangular grid, in the case of hexagonal tiling the coordinates lie on a triangular grid, and in the case of Voronoi tiling the coordinates have random values. We now have a matrix of size Nx2 where N is the number of random values we generated and 2 corresponds to the dimension of the system. In the first column we have x coordinates and in the second column we have the y coordinates. To apply the random rotation, we generate a 2x2 rotation matrix with a random angle generated by RNG and multiply the Nx2 matrix of coordinates. To add the random translation, we add / subtract a random two-dimensional vector to all the rotated points. At this step we must be careful that the random vector is not too long, so that there are enough random points in the area in which the noise will be generated. In the next step, we remove all the points which are not in the area in which the final noise will be generated. We are left with a Mx2 matrix containing the coordinates and M random values, where M is the number of remaining random values after the last step. Now we find the points on the mesh which are closest to each of the M coordinates. To each point on the mesh, we assign the index of the closest of the M coordinates. The random value in the array of M random values with the same index as a certain point on the mesh will be assigned to that point on the mesh. We have generated the random tiling in two dimensions with a random translation and rotation. There are more advanced algorithms which are less computationally expensive.
[0047] For the examples we choose four different tiling types Voronoi tessellation, Quadrilateral (QUAD) tiling, Hexagonal (HEX) tiling and Perlin noise. The quadrilateral and hexonal tilings were rotated by a random angle and a random vector. The random values for the tilings are drawn from PCG-64 pseudo-random number generator initiated with a random seed. The tilings are projected on to a square grid with X grid points. The “rescaling function” was defined to be ak= aQfk, where akis the length scale in the k-th iteration and aQis the principal length scale. The “normalization function” broadcasts the tiling from the tiling function to a range of [-1 , 1 ], and the “stacking function” sums the result from the previous iteration with tiling pattern of the current one. The “mapping function” broadcasts the final pattern to a range between - 1 and 1 .
[0048] Figure 4 shows noise patterns, which are generated with Voronoi tilings (a-e), patterns f)-j) are generated with quadrilateral (QUAD) tilings, noise patterns from k)-o) are generated with hexagonal (HEX) tilings, and noise patterns from p)-t) use Perlin noise as tiling patterns. The value of k_max was set to 10 in the case of a), f), k) and p) and for the rest of the cases k_max was set to 20. The value of f was set to 1 in all cases, except for e), j), o), t) where the values were 1 .1 , 0.95, 0.95 and 1 .05. The values of ao = 30, 30, 50, 100, 50 in the cases of a)-e) (from left to right). The values of ao = 1 , 1 , 0.5, 0.2, 0.5 in the cases of f)-j) (from left to right). The values of ao = 1 , 1 , 0.5, 0.2, 0.5 in the cases of k)-o) (from left to right). The values of ao = 20, 20, 30, 50, 30 in the cases of p)-t) (from left to right).
[0049] Figure 5 shows different noise patterns, which were generated with quadrilateral tilings with ao = 0.5, f = 1.0, and k_max was set to 1 a), 2 b), 5 c), 10 d), 25 e), 50 f), 75 g) 100 h). The seed for the random number generator was kept constant in all examples.
Claims
Patent claims1. A method for tiling fractal noise for generation of complex pseudo-random patterns / noise in n-dimensional space, wherein the n-dimensional patterns are generated by recursively combining a certain number of tilings of random values of the same type, but with different translation, rotation or lengths scales.
2. The method according to claim 1 , wherein rotation and translation is random or not random, wherein in case of not random method the tiling is always performed with the same orientation, but with different scale, and individual tiles have a pre-defined value.
3. The method according to claim 1 or claim, comprising at least the following steps: a) defining Tiling parameters, which are principal noise length scale, tiling type and / or noise length scale, and optionally rescaling “Tiling parameters”, by a “rescaling function” based on the rescaling parameters, i.e. the parameters of the rescaling function, and the iteration number “k”, wherein kmax is the maximal number of iterations defined by the user, b) the defined and / or rescaled “tiling parameters” obtained in step a) or unsealed tiling parameters are passed into the “tiling function” (b) along with the “mesh” on which the noise is generated, wherein said mesh can be an n-dimensional grid, and wherein the random number generator (RNG) is arranged to generate the random numbers for each tile in the tiling, and wherein the tiling function creates a tiling based on the tiling parameters and each tile in the tiling will is assigned a random number by a user or from the RNG with a certain “seed”, which can be specified by the user, and projected onto the mesh thus leading to resulting tiling, c) The tiling obtained in step b) is passed into a “normalization function” (c) along with normalization parameters, wherein said Normalization Function is arranged to normalize / rescale the tiling to a certain range of values, i.e. an interval which is suitable for the stacking function,d) The “normalized tiling” and “stacking parameters” are passed into the “stacking function” arranged to combine the “normalized tiling” of this iteration with the result of the previous iteration to generate the final output, wherein in the first iteration the normalized tiling is left unchanged, and wherein the Stacking Function takes as input the Normalized Tiling, user-specified Stack Parameters and combines the Normalized Tiling with the results from the previous iterations, e) Performing at least one loop repeating steps a) to d) for a “k_max” number of times, where “k_max” is the number of iterations specified by the user, wherein the result of this step is a Tiling Fractal Noise, wherein selection of rescaling, rotating and translating is done in every loop separately, f) The Tiling Fractal noise obtained in step e) is passed into a “mapping function” arranged to map the output to a certain range of values, the so-called mapping parameters, which is an interval inside which the output values will be, wherein the values are broadcasted to a range specified by the “mapping parameters”, typically noise amplitude, wherein the Mapping Function maps the Tiling Fractal Noise to a certain range of values and returns the Output, g) The result from the previous step (f) is stored an / or displayed on a device with a suitable display, such as a computer.
4. The method according to any of the preceding claims, wherein the tiling type is selected in the group consisting of Quadrilateral tiling, Hexagonal tiling, Voronoi Tessellation, outputs of other noise algorithms such as Perlin Noise.
5. The method according to any of the preceding claims, wherein in step b) a random rotation and translation of the tiling is performed.
6. The method according to any of the preceding claims, wherein the mesh in step b) is composed of points which are equidistant along each of the n-dimensions, and may be selected in the group comprising a checkerboard, an n-dimensional grid of any type, a point cloud of points in n-dimensions, an irregular triangular mesh, and a regular triangular mesh7. The method according to the preceding claim, wherein the mesh has a spatially varying density of points.
8. The method according to any of the preceding claims, wherein in step c), the random values of the tiles are broadcasted to a certain range, for example [-1 , 1 ] or [0, 1 ],9. The method according to any of the preceding claims, wherein the stacking function is S([a,b], [c,d]) -> [a,b],10. The method according to any of the preceding claims, wherein the Mapping Function applied in step f) is a function arranged to transform values from the interval, for example [0, 1 ], inside which the outputs of the stacking function are into an arbitrary interval, wherein the Mapping function is preferably a single number, a linear function, or a square function, wherein in case of a single number, the output of the stacking function is multiplied, in case of a linear function, the parameters are the minimum and maximum, while for the square function, the mapping parameters are the coefficients of the square function.
11. A device for generating an image comprising a computer or a processor or any other hardware arranged to perform the method according to any of the preceding claims.
12. The device according to the preceding claim, wherein the device further comprises a display for showing generated image or connection means for connecting to an external display adapted for displaying the generated image with tiled fractal noise.
13. A computer program comprising executable instructions for performing the procedure according to any claim from 1 to 10.
14. A computer readable medium comprising the computer program according to claim15. Use of the method and / or the apparatus according to any of the preceding claims in fields of computer graphics, computational geometry, and / or numerical simulations, wherein the method and / or the apparatus are preferably used for procedural generation of n-dimensional geometry, such as terrain, textures, patterns, initial conditions for numerical simulations, and / or initial conditions / noise generator for Al generative models / generators.
Citation Information
Patent Citations
Standard for perlin noise
US6867776B2
Bandlimited noise for computer graphics
US20060164427A1