Speckle噪声生成

4
抱歉如果这似乎是一个愚蠢或懒惰的“我找不到”的问题,但是我已经尝试了几天来寻找一篇论文或任何类似的东西来解释如何生成斑点噪声(在2D图像上)。我已经发现,消除斑点噪声的更简单方法之一是均值滤波器(我已经实现了),但是绝对找不到产生噪声的方法。请问有人可以指导我学习如何生成斑点噪声吗?此外,是否可以要求在OpenCV中以简单的方式完成它(C ++图像处理库)?
感谢您提供的任何帮助。
3个回答

9

斑点噪声本质上是一种乘性噪声,可能(或可能不)还带有加性噪声(定义因情况而异)。这篇论文提供了斑点噪声的良好概述,包括去除该噪声的描述和方法。

以下是一些简单的 Python 代码,可以产生乘性斑点噪声:

import cv

im = cv.LoadImage('tree.jpg', cv.CV_LOAD_IMAGE_GRAYSCALE)
mult_noise = cv.CreateImage((im.width,im.height), cv.IPL_DEPTH_32F, 1)

cv.RandArr(cv.RNG(6), mult_noise, cv.CV_RAND_NORMAL, 1, 0.1)    

cv.Mul(im, mult_noise, im)

cv.ShowImage("tree with speckle noise", im)
cv.WaitKey(0)

无噪声:

enter image description here

有斑点噪声: enter image description here


哇!代码+优秀的解释+我可以引用的论文?太谢谢了。 - user901898
你的回答中的链接已失效。 - OscarVanL

0

斑点噪声与物理成像过程相关,因此我不确定是否容易(甚至真的可能)以一般方式模拟它。

但是,根据您所需的图像类型,您可以使用其他形式的噪声来接近它。我猜一个乘性盐和胡椒噪声应该差不多可以模拟 SAR 图像。

另一个(可能更好的)可能性是探索 NASA / ESA 的网站,并寻找 SAR 图像(查找 Pleiades、Cosmo-Skymed 和 SAR Lupe 等程序)。一些门控激光成像实验室可能也已经公开发布了一些样本数据。


我已经开发了一些方法来生成S&P噪声,所以如果我将S&P结果与输入结果相乘,它应该会“类似”于斑点噪声?我的应用实际上是为了比较和对比不同的空间、频率和小波技术的去噪能力。问题在于,我被要求使用a)高斯b)S&P和c)斑点来破坏图像。我之前已经为其他两个开发了方法,但在斑点图像方面似乎有些困难。我也会考虑其他可能性。感谢您的快速回复 :) - user901898
这是一门科学图像处理课程吗?大多数基础课程都将斑点视为乘性噪声,因此将噪声与图像相乘(而不是加)应该可以解决问题。但您可以向助教确认。 - sansuiso

0

只需向您的图像添加高斯噪声即可。cvRandArr 似乎是一个不错的选择。

如果您将噪声与信号相结合,也可以得到更复杂的效果,这也很容易实现,只需在原始图像和噪声之间进行一些像素级别的乘法即可。


感谢您的迅速回复。正如我在其他地方提到的,我的应用程序需要为高斯、椒盐和斑点噪声生成噪声。 - user901898
“Speckle”是噪点图案的通用名称,它可以是高斯或S&P类型的,因此我不明白所要求的内容。 - CharlesB
1
Speckle是一种乘性噪声,而根据定义,添加高斯噪声不是Speckle。 - OscarVanL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接