【发布时间】:2011-10-18 14:24:00
【问题描述】:
在 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 - 我现在正在寻找参考资料,我很确定我不久前在一篇论文中读过它。直觉上我认为这是有道理的,即在高通滤波之后,你会留下噪声和边缘细节,因为噪声在数量上占主导地位,中值应该是噪声方差的合理估计
-
aha 我意识到问题出在哪里......应该有一个额外的比例因子 1/0.675 - 然后给出一个非常合理的估计值 0.00926
-
所以你成功了吗?如果您这样做了,您应该将其发布为答案,以便其他人可以过来查看它。
-
@Phonon 它似乎并不总是给出合理的答案 - 所以我会等着看其他人是否有 cmets
标签: matlab image-processing noise