Java 向图像添加噪声

Java 向图像添加噪声,java,image,bufferedimage,noise,gaussian,Java,Image,Bufferedimage,Noise,Gaussian,我试图在Java中向BuffereImage添加噪声,但我更感兴趣的是用于向映像添加噪声的算法,而不是Java或任何其他特定于语言的实现 我在网上搜索并发现了高斯噪声,但教程/文章要么只显示对我来说不太有用的代码示例,要么显示复杂的数学解释。不清楚你的问题是什么,但这里有一些随机观察结果,以防它们有所帮助: 如果图像相对未经处理(未按比例缩放),则每个像素中的噪声基本上是独立的。因此,您可以通过依次在每个像素上循环,计算新的噪波值,然后将其相加来模拟 即使图像已被处理,上述方法通常也是合理的近

我试图在Java中向BuffereImage添加噪声,但我更感兴趣的是用于向映像添加噪声的算法,而不是Java或任何其他特定于语言的实现


我在网上搜索并发现了高斯噪声,但教程/文章要么只显示对我来说不太有用的代码示例,要么显示复杂的数学解释。

不清楚你的问题是什么,但这里有一些随机观察结果,以防它们有所帮助:

  • 如果图像相对未经处理(未按比例缩放),则每个像素中的噪声基本上是独立的。因此,您可以通过依次在每个像素上循环,计算新的噪波值,然后将其相加来模拟

  • 即使图像已被处理,上述方法通常也是合理的近似方法

  • 图像中的噪声量取决于许多因素。对于数字传感器生成的典型图像,通常的近似值是每个像素中的噪声大致相同。换句话说,您选择一些标准偏差(SD),然后在上面的循环中,使用该标准偏差从高斯分布中选择一个值

  • 对于天文图像(和其他低噪声电子图像),有一个噪声分量,其中SD与像素亮度的平方根成正比

因此,您可能想做的是:

  • 选择SD(您希望图像的噪音大小)

  • 在循环中,对于每个像素:

    • 根据给定SD(平均值为零)的高斯分布生成一个随机数,并将其添加到像素(假设为灰度图像)。对于彩色图像,生成三个值并分别将它们添加到红色、绿色和蓝色

更新我想夜视将成为类似天文成像的东西。在这种情况下,您可以尝试改变每个像素的SD,使其包含一个常数加上一些取决于亮度平方根的值。比如说,如果一个像素的亮度
b
,那么你可以使用
100+10*sqrt(b)
作为SD。您需要使用这些值,但这可能看起来更真实。

您的编程相关问题是什么?非常感谢,我的目的是创建一个夜视图像过滤器,因此我将彩色图像转换为单色绿色,然后使用您的算法在其上添加噪波。不是完美的假夜视效果,但也不是太差。