问题标签 [noise-generator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
672 浏览

perlin-noise - Perlin 和 Simplex Noise 的排列和梯度表在实践中是如何工作的?

因此,我一直在研究 Perlin 和 Simplex 噪声的工作原理,虽然我了解了常规 Perlin 噪声的核心原理,但我对排列和梯度表的工作原理有点困惑。

据我了解,它们提供比种子随机数生成器更好的性能,因为它们是预先计算的值的表,可以很好地索引以便快速访问。

我不完全明白的是它们实际上是如何工作的。我已经看到一个排列表实现为从 0-255 的洗牌值的数组,如下所示:

但我不确定这样做的实际目的是什么。我想知道的是:

  • 排列表是如何与网格点相关的?
  • 梯度表是如何生成的?
  • 排列表中的值如何与梯度表一起使用?排列值是否对应于梯度表中的索引?
0 投票
0 回答
356 浏览

c - 手动创建泊松/散粒噪声

我正在尝试理解并创建自己的泊松噪声发生器。我正在关注此处看到的代码示例:https ://imagej.nih.gov/ij/plugins/download/Poisson_Noise.java

它会产生泊松噪声,但我的理解是这种类型的噪声是由光子样本控制的,我在这里看不到任何地方。我也不明白如何控制噪音的强度。

这是我的代码版本:

谁能指出我正确的方向?

谢谢!

0 投票
1 回答
632 浏览

c - 如何产生图像噪声频率?

我在这里阅读了关于图像噪声的非常有趣且内容丰富的文章:http: //www.cambridgeincolour.com/tutorials/image-noise-2.htm

关键点之一是噪声频率,它可以高也可以低。我很好奇这将如何计算?

我遇到了另一篇文章,其中开发人员通过对周围像素进行采样然后执行平均来实现低频图像噪声。但这需要在计算完所有噪声后进行单独的计算。

这是传统的做法还是有不同的方法来计算图像噪声频率?

谢谢

0 投票
0 回答
285 浏览

javascript - 为什么我的 Perlin 噪声发生器会产生这种波浪状的图案?

我已经开始学习 perlin 噪声生成,我想尝试用 JavaScript 制作自己的生成器。为了让我开始,我一直在关注这个 youtube 教程。尝试复制他们的基本实现。我也一直在读这篇文章。

我提供了我的实现的jsFiddle,它显示了我在做什么以及输出是什么。与我在 youtube 教程中看到的流畅、冒泡的噪音不同,我得到了紧缩的黑色曲线。这是一张图片:

这是我的生成器代码:

我通过将像素 x 和 y 值除以画布高度并按频率变量缩放来利用生成器函数:

我目前只是使用噪声值来生成灰度颜色值:

对我来说,这样做的目的是了解更多关于噪声生成和 javascript 的信息。我试图思考这个问题并提出了一些意见:

  • 没有可见的伪影,所以我的淡入淡出功能似乎工作正常。
  • 似乎没有任何重复的模式,所以这是一个好兆头。
  • 我去生成一个完整的灰度值范围——不仅仅是黑白。
  • 普遍的问题似乎是每个像素的梯度如何影响其邻居:我的似乎聚集在固定宽度的蛇状绳索中。似乎提供的梯度向量选项和用于随机选择它们的排列表将控制这一点,但我的是教程的精确副本:相同的 4 个向量,每个向量都指向 45 度的象限,以及标准排列桌子。

这让我很难弄清楚原因是什么。我的一般怀疑归结为:

  • 我以一种我一直忽略的微妙方式搞砸了算法。(最有可能的)
  • JavaScript 做一些我忽略的事情的方式有细微的差别。(也许)
  • 我正确地生成了噪声,但错误地将结果应用于我的画布图像数据中使用的 RGB 值。(最不可能)

我真的很想弄清楚这一点。在此先感谢您的帮助!:)

另外:我确实认为这种模式很酷,而且这是一个学习练习,所以如果有人能分享我为什么要特别获得这种模式的见解,那就太好了!

0 投票
1 回答
344 浏览

algorithm - 这个 2d 噪声生成功能是如何工作的?它有名字吗?

我在着色器书中遇到了这个 2D 噪声函数

这个函数的作用很清楚:它在正方形的顶点生成四个随机数,然后对它们进行插值。我发现困难的是理解为什么插值(s00 + alpha * dx1 + (1 - alpha) * beta * dy1 + alpha * beta * dy2表达式)有效。当 x 和 y 值似乎不是对称的时,它是如何对这四个值进行插值的?

0 投票
0 回答
1024 浏览

python - 使用 Python Numpy 创建具有特定 SNR 的噪声信号

我需要创建一个信号(一个多维数组)并向它添加一些“加性拉普拉斯噪声”。然后,我希望能够测量结果信号的 SNR 水平(以 dB 为单位)。

如果有更简单的方法,我还想创建具有特定 SNR(比如说 25、30 或 35 dB)的那种信号。

我已经创建了一个关于如何创建该信号的玩具示例,但我什至不确定这是否是添加所谓的“加性拉普拉斯噪声”的正确方法:

0 投票
1 回答
466 浏览

javascript - JavaScript 中的拉普拉斯噪声分布

我想创建一个基于 Web 的差分隐私演示。为此,我需要一个拉普拉斯噪声分布​​的 JavaScript 实现。

我一直无法在 JavaScript 中找到基本的噪声分布,例如 Gaussian。这是令人惊讶的,因为我希望会有很多很酷的 JavaScript 演示来展示分布是如何构建的,一个接一个地绘制,以产生一个漂亮的钟形曲线。

如何在 Javascript 中生成拉普拉斯噪声分布​​?

0 投票
1 回答
707 浏览

python - Amplitude modulation of a brown noise generated with acoustics package in python

I am totally new to python, so I tried to read and learn what I could but I cannot seem to do what I want, and I haven't found a solution on Stack Overflow or other sources. My aim is to create a wave file of brown noise with amplitude modulation at a given frequency. I want to generate brown noise and modulate it.

I intended to use the python acoustics package, unfortunately I don't understand how to use the functions to create colored noise. I looked at the examples, but I don't see examples on colored noises functions use.

Anyone can help me solving this issue? Thanks.


Here is my code:

0 投票
2 回答
120 浏览

java - 噪音产生:“房间噪音”

上周我正在开发一个世界生成器(用于 Minecraft 模组)。但是,我不只是在寻找 Perlin 噪声,而是基于单元噪声的东西。我想生成一种地下实验室,存在几个不同大小的房间。

为了解释这个问题,我使用了 2D 示例。

噪声生成器采用网格单元位置 ( int x, int y),并返回具有以下结构的对象:



4 个布尔值代表启用或禁用的墙壁:roomType分别代表房间的类型。

最终的结果应该是这样的: 这里,背景棋盘格图案代表基础网格,黑色线条代表墙壁。这只是一个可以生成的简单示例,但在实际情况下,网格在 x 和 y 方向上都是无限的在此处输入图像描述

我现在遇到的问题是噪声发生器只接受 x 和 y 坐标,这是它应该生成的网格单元的坐标。有一个种子,我可以为哈希函数生成更多随机种子:

我可以使用散列函数: ,它根据种子Hash.hash2D(int seed, int x, int y)返回随机坐标。double

这将提供为周围细胞生成信息的能力。

要轻松生成更大的房间,您可以为房间设置最大尺寸,并检查房间的面积是否大于 1x1。如果它们在那里,并将跨越到当前房间,则该房间将是另一个房间的延伸。但是,检查一个房间是否会扩展需要检查它是否尚未扩展(否则,不需要的房间扩展会出现在扩展另一个房间的基础上),这会陷入无限循环。

就我而言,有一张房间类型、大小和重量的给定表格。例子:

还有很多其他的,尺寸最大为 5x5,但我使用这个示例列表来回答我的问题。此示例中的最大尺寸为 3x3(即 max-width x max-height)。

在这里,我有一个 Java 基本设置的示例类:

我正在寻找generate方法的内容,为此我尝试了很多东西,但是每次我都变成了无限循环或者它不起作用。

有没有办法在小于无穷大的情况下产生这种O(N)噪音N?如果有办法,那是哪种方式,我该如何实施?我搜索了互联网并尝试了很多东西(现在已经 3 周),但仍然没有找到解决方案。

我使用 Java 1.8,但我更喜欢任何 C 风格的语言。

同样,我有这个哈希函数:


编辑:

预期结果: 蓝线是走廊,稍后生成。只是忘记他们。
在此处输入图像描述


笔记:

我无法手动加载和删除块(网格单元),基本 API(我的世界)正在为我做这件事。它只给了我坐标(这取决于玩家的互动),我应该归还一个适合该坐标处的块的(一部分)房间。我也知道,一旦生成了一个块,就不会再次生成它。

0 投票
1 回答
2252 浏览

c# - c#更快的设置像素颜色的方法

我选择了一个使用setPixel(). 这个应用程序的大部分运行时间都花在了setPixel()函数中,所以我希望提高函数的执行速度。

我对此进行了一些研究,发现:

已被推荐为一种更快的方法。但是,这会生成一个完全黑色的图像。

我不明白 100% 图像处理和内存指针如何工作才能完全理解代码并将其重构为更好的东西。

这是该人实施之前的原始代码:

Iptr只是一个 IntPtr

Stride是一个 int,我唯一能找到这个设置的地方是Stride = (PixelCount/Height) * (Depth / 8)

x是宽度

y是高度

我是否能够解释原始代码块中发生的事情,并可能有助于理解如何将其转换为执行速度更快的东西,由于嵌套的 for 循环,目前完成此功能大约需要 500,000 毫秒宽*高。