How can i determine the percentage of noise given the variance of imnoise ??

7 views (last 30 days)
using the noise function J = imnoise(I,'gaussian',m,v) ,how can i estimate the percentage of noise ????
  5 Comments
Mariem Harmassi
Mariem Harmassi on 20 Oct 2012
i am asking how can i calculate the percentage of noise for a mean and varience given ?? Is there any method able to estimate the percentage of noise for the code J = imnoise(I,'gaussian',m,v) Or the inverse given a percentage of noise ,How can i determine the appropriates variance and mean . The goal is to have the relation between the (m,v) and the percentage of noise.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 20 Oct 2012
Edited: Image Analyst on 20 Oct 2012
From the help:
J = imnoise(I,'gaussian',m,v) adds Gaussian white noise of mean m and variance v to the image I. The default is zero mean noise with 0.01 variance.
Let's get the mean of the entire image
meanOfI = mean2(I);
So, on average, I think you're saying you want sqrt(variance) to equal 40% of meanOfI. So now you know what v has to be. Try experimenting around a bit and see what you learn.
Perhaps this demo will be instructive:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures.
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
format longg;
format compact;
fontSize = 14;
% Get the original image.
grayImage = imread('eight.tif');
subplot(2, 2, 1);
imshow(grayImage);
title('Original Gray Scale Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
% Add Gaussian noise to the pixel values.
noisyImage = imnoise(grayImage,'gaussian', 0, 0.02);
subplot(2, 2, 2);
imshow(noisyImage, []);
title('Noisy Image', 'FontSize', fontSize);
% Get the noise alone.
noiseOnly = single(noisyImage) - single(grayImage);
subplot(2, 2, 3);
imshow(noiseOnly, []);
title('Image of Only the Noise', 'FontSize', fontSize);
% Calculate the signal to noise ratio
snrImage = abs(noiseOnly) ./ double(grayImage);
subplot(2, 2, 4);
imshow(snrImage, []);
title('Image of the Signal-to-Noise Ratio', 'FontSize', fontSize);
% Get the mean SNR
snrMean = mean2(snrImage);
message = sprintf('The mean Signal-to-Noise Ratio = %.2f', snrMean);
uiwait(msgbox(message));

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!