在Matlab内,我将噪声添加到具有已知方差的图像中。我知道我可以用下面的方法做到这一点:使用Matlab估计图像中噪声的方差
var = 0.01;
i = im2double(imread('lena.bmp'));
i_n = imnoise(i, 'gaussian',0,var);
很明显,由此产生的图像有噪音。但是,如果我试图通过计算高通滤波器的中位数估计的噪声方差,我真的没有看到任何相关
k = [1 4 6 4 1]'*[1 4 6 4 1];
kk = k ./sum(sum(k));
var_est = median(median(abs(i_n - imfilter(i_n,kk))))
var_est(:,:,1) =
0.0631
var_est(:,:,2) =
0.0620
var_est(:,:,3) =
0.0625
我很欣赏估计方差是一个棘手的问题,但我只是想一个相当接近的结果,例如50%的错误是可以容忍的。我在做什么不正确?
我不确定这个公式真的是你需要的。你能提供一个你找到它的来源吗?是否在纸上? – Phonon
@Phonon - 我现在在寻找一个参考,我非常确定我在一篇论文中读到它。直觉上我认为它是有道理的,即在高通滤波之后,你留下了噪声和边缘细节,因为噪声在数量上占主导地位,所以中值应该是对噪声方差的合理估计 – trican
aha我意识到了问题所在。 。应该有一个额外的比例因子1/0.675 - 然后给出一个非常合理的esimtate 0.00926 – trican