Image processing Gaussian noise
18 次查看(过去 30 天)
显示 更早的评论
I need to add gaussian noise on a gray image. But i need to do it without using library.
I will be glad if you help me.
1 个评论
Image Analyst
2021-11-17
Can you at least use randn()? Or if not, can you use rand()? Or do you have to write your own random number generator?
回答(2 个)
DGM
2021-11-18
编辑:DGM
2021-11-18
Something like this:
% same as imnoise() defaults
gaumean = 0;
gauvar = 0.01;
inpict = imread('cameraman.tif');
outpict = im2uint8(im2double(inpict) + gaumean + sqrt(gauvar)*randn(size(inpict)));
montage({inpict,outpict})
Note that this example assumes that the intended output class is uint8. Adjust as needed.
0 个评论
yanqi liu
2021-11-18
clc;clear all;close all;
img = mat2gray(imread('rice.png'));
img2 = img+0.1*randn(size(img),'like',img);
figure;
subplot(1,2,1); imshow(mat2gray(img));
subplot(1,2,2); imshow(mat2gray(img2));
1 个评论
DGM
2021-11-18
Using mat2gray() as a general tool for converting images to floating point alters the relative scaling of the information, whereas the intended tools (e.g. im2double) scale things with respect to the limits implied by the class (see getrangefromclass()). It increases contrast unnecessarily. It's easier to notice with a lower-contrast image:
img = imread('pout.tif'); % original image
imshow(img);
img2 = mat2gray(img); % this stretches the contrast
img2 = img2 + 0.1*randn(size(img2),'like',img2);
figure; imshow(img2);
img3 = im2double(img); % this doesn't change the contrast
img3 = img3 + 0.1*randn(size(img3),'like',img3);
figure; imshow(img3);
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




