MATLAB:如何使用imnoise(我,' localvar',image_intensity,var)?

时间:2018-02-12 13:48:39

标签: matlab image-processing signal-processing

我正在尝试根据图像的强度为图像添加噪点。

I = imread(filename);
figure, imshow(I);

v = I(:);
J = imnoise(I, 'localvar', v, 0.04*v);
figure, imshow(J);

但是当我运行算法时,我得到以下异常:

  

错误使用max:整数只能与整数组合使用   同一类或标量双打

我不确定我的问题是什么。非常感谢你!

1 个答案:

答案 0 :(得分:0)

最有可能的是,您以一种格式从文件中读取Iimnoise函数使用不同的格式。阅读I后,请写下以下一行:

I = double(I) 

那会对你有所帮助。以下是类似问题的整个例子:
 Using imnoise to add gaussian noise to an image

I = imread('eight.tif');
I = double(I);

%// Adjust intensities in image I to range from 0 to 1
I = I - min(I(:));
I = I / max(I(:));

%// Add noise to image
v = var(I(:)) / sqrt(10);
I_noisy = imnoise(I, 'gaussian', 0, v);

%// Show images
figure
subplot(1, 2, 1), imshow(I), title('Original image')
subplot(1, 2, 2), imshow(I_noisy), title('Noisy image, SNR=5db')