我试图在Java中为BufferedImage添加噪声,但我对用于向图像添加噪声的算法更感兴趣,而不是Java或任何其他特定于语言的实现。
我在网上搜索过并发现了高斯噪音,但是教程/文章只展示了对我来说不是很有用的代码示例,或者是复杂的数学解释。
答案 0 :(得分:1)
目前还不清楚你的问题是什么,但是如果他们有所帮助,这里有一些随机观察:
如果图像是相对未处理的(它没有按比例缩放),那么每个像素中的噪声大致是独立的。因此,您可以通过依次循环每个像素,计算新的噪声值并添加它来模拟它。
即使处理完图像,上述方法通常也是合理的近似值。
图像中的噪点量取决于很多因素。对于由数字传感器产生的典型图像,常见的近似是每个像素中的噪声大致相同。换句话说,你选择一些标准偏差(SD),然后在上面的循环中,从具有该SD的高斯分布中选择一个值。
对于天文图像(和其他低噪声电子图像),噪声的一个组成部分,SD与像素亮度的平方根成正比。
你想做的事情很可能是:
选择一张SD(你希望图像有多嘈杂)
在循环中,对于每个像素:
更新我认为夜视会像天文成像一样。在这种情况下,您可以尝试改变每个像素的SD,以便它包含一个常数加上取决于亮度平方根的东西。因此,如果像素的亮度为b
,那么您可以使用100 + 10 * sqrt(b)
作为SD。您需要使用值,但这可能看起来更真实。