【问题标题】:MATLAB:Getting different results when running my program at different timesMATLAB:在不同时间运行我的程序时得到不同的结果
【发布时间】:2014-01-10 00:01:20
【问题描述】:

我正在使用 MATLAB R2013 减少超声图像中的斑点噪声。我设计了 10 个基本过滤器并尝试使用这些过滤器进行混合组合。当我运行我的程序时,对于同一个输入图像,我在不同时间得到不同的结果,没有更改其他输入参数。当我在上午 1.17 运行我的程序时,我得到了 PSNR = 74.5424,当我在上午 1.21 运行相同的程序时,我得到了 PSNR = 75.04。为什么会这样?

如果每次运行我的程序时都有不同的值,我怎么能得出一个单一的值?请帮忙。我附上了下面的截图,看看 SNR、PSNR、Beta 和 Speckle Index 的值。

【问题讨论】:

  • 一些示例代码会很有用。您是否使用任何随机变量或 mex 文件?如果是 mex 文件,您可能会遇到内存或/或指针问题。
  • 没有墨西哥代码..我会给出代码..我在图像预处理中添加散斑噪声..使用 imnoise 命令。这会是我的问题的原因吗?

标签: matlab image-processing


【解决方案1】:

J = imnoise(I,'speckle',v) 使用公式 J = I+n*I 向图像 I 添加乘性噪声,其中 n 是均值为 0 方差为 v 的均匀分布的随机噪声。默认因为 v 是 0.04。

所以您使用的是随机噪声,因此您的结果不是确定性的。 (一个可预测的 RNG 将是一个糟糕的......) 如果你想要确定性的结果,你可以预先计算噪声,将它保存在一个 mat 文件中,每次都从文件中应用它。

根据MATLAB帮助,方程为J = I+n*I

其中 n 是均匀分布的随机噪声,均值为 0,方差为 v。v 的默认值为 0.04。

您可以为每个像素计算这样的 n 并将其存储为 heightxwidth 双矩阵——我们称之为 N。加载后,通过评估应用噪声:

Img2 = Img .* (1+N);

【讨论】:

  • 如何计算噪声预先保存在mat文件中?
猜你喜欢
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
相关资源
最近更新 更多