Clear Filters
Clear Filters

HOW TO IDENTIFY MEAN AND STANDARD DEVIATION FOR THIS CODE?

1 view (last 30 days)
Read image by its file name
I = imread('.');
I=imresize(I,[256 256]);
I=im2double(I);
imshow(I)
% Convert RGB to HSV
img1=rgb2hsv(I);
figure(), subplot(2, 2, 1), imshow(I), title('Original')
subplot(2, 2, 2), imshow(img1(:,:,1)), title('Hue'), colorbar
subplot(2, 2, 3), imshow(img1(:,:,2)), title('Saturation'), colorbar
subplot(2, 2, 4), imshow(img1(:,:,3)), title('Value of Brightness'), colorbar
H=img1(:,:,1).*255;
S=img1(:,:,2).*255;
V=img1(:,:,3).*255;
% H(:,:,1) = H(:,:,1) * 2.5;
% min. and max value of hsv
Hmin = min(H(:));
Smin = min(S(:));
Vmin = min(V(:));
Hmax = max(H(:));
Smax = max(S(:));
Vmax = max(V(:));
%Set the hue value to zero if it
%less than 50 or great than 150
H((H < 50) | (H > 150)) = 0;
%Set the hue value of wheat straw
% pixel to zero
H(H > 49 & H < 60 & S > 5 & S < 50 & V > 150) = 0;
%Thresholding
T = 49; %T can be any value in [1, 49]
t = T./255;
BW = im2bw(H, t);
%Delete the objects less than 100 pixels
BW = bwareaopen(BW, 100);
%Show the identification result
figure, imshow(BW);
% Calculate the area, in pixels, of binary image.
numberOfPixels1 = sum(BW(:));
% Another way to calculate it that takes fractional pixels into account.
numberOfPixels2 = bwarea(BW);
% CALCULATE PARAMETERS
I =rgb2gray(I);
I=double(I);
BW =(BW);
% % % Find the mean squared error
mse = sum((I(:)-BW(:)).^2) / numel(I);
%
% % % now find the psnr, as peak=255
psnr = 10*log10(255*255/mse);
  3 Comments
tashu Dabariya
tashu Dabariya on 17 Jun 2019
% CALCULATE PARAMETERS
I =rgb2gray(I);
I=double(I);
BW =(BW);
% % % Find the mean squared error
mse = sum((I(:)-BW(:)).^2) / numel(I);
%
% % % now find the psnr, as peak=255
psnr = 10*log10(255*255/mse)
is it right way to calculatet psnr and mse?
for mean and std variable might be I and BW

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 17 Jun 2019
Edited: Adam Danz on 17 Jun 2019
It looks like you want to calculate the mean squared error between the I and BW arrays which can be done using immse() from the image processing toolbox.
err = immse(I,double(BW));
  3 Comments
Adam Danz
Adam Danz on 17 Jun 2019
I saw in your code, you converted I to double: I=double(I); In my answer, I also converted BW to double which would avoid that error.
Adam Danz
Adam Danz on 17 Jun 2019
Edited: Adam Danz on 17 Jun 2019
tashu, this is a different question than what you started with and I suggest writing a new question with a more focused title so it attracts experts in this area.
Also, providing code is a big help but please format it by using the format buttons while your editing the question. I've formatted your code so far but it saves us some time if you do it yourself. Thanks.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!