为图像添加噪点

时间:2012-07-08 12:08:32

标签: java image bufferedimage noise gaussian

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

我在网上搜索过并发现了高斯噪音,但是教程/文章只展示了对我来说不是很有用的代码示例,或者是复杂的数学解释。

1 个答案:

答案 0 :(得分:1)

目前还不清楚你的问题是什么,但是如果他们有所帮助,这里有一些随机观察:

  • 如果图像是相对未处理的(它没有按比例缩放),那么每个像素中的噪声大致是独立的。因此,您可以通过依次循环每个像素,计算新的噪声值并添加它来模拟它。

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

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

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

你想做的事情很可能是:

  • 选择一张SD(你希望图像有多嘈杂)

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

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

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