2014-01-09 47 views
0

我正在使用MATLAB R2013在超声波图像中减少斑点噪声。我设计了10个基本过滤器,并尝试使用这些过滤器进行混合组合。当我运行我的程序时,我在不同的时间对同一个输入图像得到不同的结果,没有其他输入参数被改变。当我在上午1点17分执行程序时,我得到了PSNR = 74.5424,当我在上午1点21分执行同样的程序时,我得到了PSNR = 75.04。为什么发生这种情况?MATLAB:在不同时间运行我的程序时获得不同的结果

如果每次运行我的程序时都会出现不同的值,我怎么能得出一个值呢?请帮忙。我附上了以下屏幕截图,请参阅SNR,PSNR,Beta和散斑索引的值。

problem with my program

+7

一些示例代码将有用。你使用任何随机变量或mex文件?如果是mex文件,可能会有内存或指针问题。 – Marcin

+0

没有mex代码..我会给代码..我在图像预处理中添加散斑噪声..使用imnoise命令。这是我的问题的原因吗? –

回答

1

J = imnoise(I '散斑',v)的加乘性噪声,将图像I,使用等式J = I + N * I,其中n是均匀地分布的随机噪声意味着0和方差v。v的默认值是0.04。

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

按照MATLAB帮助,方程是J = I+n*I

其中n是均匀分布的均值为0,方差V的随机噪声。对于v该缺省值是0.04。

你可以计算这样的N代表每个像素,并存储为heightxwidth双矩阵--let的呼叫N.你那装后,由评测应用噪音:

Img2 = Img .* (1+N); 
+0

如何事先计算噪音并将其保存在垫子文件中? –

相关问题