From: us on
"saurabh pandey"
> STATS=regionprops(L,'Area');
> disp('area using regionprops')
> s=[STATS.Area];
> w=sum(s)
> it will calculate area of whole image i think.how should it be so that it will calculate area in selected rectangle.
> or how can this be done by using roipoly where each points selected by user manually and it will do further processsing in that selected portion?
> i am unable to understand how to do it.please help.

a hint:
- look at the many other options of REGIONPROPS...
- some will help you to do what you want...

us
From: Image Analyst on
"saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1bevk$rfv$1(a)fred.mathworks.com>...
> thanks for your response. i have R2007b version of matlab.so i cant run your code.
> suppose i am doing like this.
----------------------------------------------------------------------------------------
Come on, you're just not trying very hard. Did you read the documentation about regionprops? You just don't pass in the gray image if you have an old version. In my uploaded code I gave comments on what to do for old versions. You can do it the way you did if you want, or since you know r2, you can just calculate the area directly, without ever evn calling bwlabel or regionprops. Here's another demo where I use imfreehanddraw to calculate the area and mean of the drawn area:
IMPORTANT: BE SURE TO JOIN ANY LINES SPLIT INTO TWO BY THE NEWSREADER!

% Change the current folder to the folder of this m-file.
% (The line of code below is from Brett Shoelson of The Mathworks.)
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
clc; % Clear command window.
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool.
imtool close all; % Close all figure windows created by imtool.
workspace; % Make sure the workspace panel is showing.
fontSize = 20;

% Read in standard MATLAB gray scale demo image.
grayImage = imread('cameraman.tif');
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
message = sprintf('Left click and hold to begin drawing.\nSimply lift the mouse button to finish');
uiwait(msgbox(message));
hFH = imfreehand();

% Create a binary image ("mask") from the ROI object.
binaryImage = hFH.createMask();
% Display the freehand mask.
subplot(2, 2, 2);
imshow(binaryImage);
title('Binary mask of the region', 'FontSize', fontSize);

% Calculate the area, in pixels, that they drew.
numberOfPixels1 = sum(binaryImage(:))
% Another way to calculate it that takes fractional pixels into account.
numberOfPixels2 = bwarea(binaryImage)

% Get coordinates of the boundary of the freehand drawn region.
structBoundaries = bwboundaries(binaryImage);
xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
x = xy(:, 2); % Columns.
y = xy(:, 1); % Rows.
subplot(2, 2, 1); % Plot over original image.
hold on; % Don't blow away the image.
plot(x, y, 'LineWidth', 2);

% Burn line into image by setting it to 255 wherever the mask is true.
burnedImage = grayImage;
burnedImage(binaryImage) = 255;
% Display the image with the mask "burned in."
subplot(2, 2, 3);
imshow(burnedImage);
title('New image with mask burned into image', 'FontSize', fontSize);

% Mask the image and display it.
% Will keep only the part of the image that's inside the mask, zero outside mask.
maskedImage = grayImage;
maskedImage(~binaryImage) = 0;
subplot(2, 2, 4);
imshow(maskedImage);
title('Masked Image', 'FontSize', fontSize);

% Calculate the mean
meanGL = mean(maskedImage(binaryImage));

% Report results.
message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ...
meanGL, numberOfPixels1, numberOfPixels2);
msgbox(message);
From: saurabh pandey on
"Image Analyst" <imageanalyst(a)mailinator.com> wrote in message <i1cerh$7fv$1(a)fred.mathworks.com>...
> "saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1bevk$rfv$1(a)fred.mathworks.com>...
> > thanks for your response. i have R2007b version of matlab.so i cant run your code.
> > suppose i am doing like this.
> ----------------------------------------------------------------------------------------
> Come on, you're just not trying very hard. Did you read the documentation about regionprops? You just don't pass in the gray image if you have an old version. In my uploaded code I gave comments on what to do for old versions. You can do it the way you did if you want, or since you know r2, you can just calculate the area directly, without ever evn calling bwlabel or regionprops. Here's another demo where I use imfreehanddraw to calculate the area and mean of the drawn area:
> IMPORTANT: BE SURE TO JOIN ANY LINES SPLIT INTO TWO BY THE NEWSREADER!
>
> % Change the current folder to the folder of this m-file.
> % (The line of code below is from Brett Shoelson of The Mathworks.)
> if(~isdeployed)
> cd(fileparts(which(mfilename)));
> end
> clc; % Clear command window.
> clear; % Delete all variables.
> close all; % Close all figure windows except those created by imtool.
> imtool close all; % Close all figure windows created by imtool.
> workspace; % Make sure the workspace panel is showing.
> fontSize = 20;
>
> % Read in standard MATLAB gray scale demo image.
> grayImage = imread('cameraman.tif');
> subplot(2, 2, 1);
> imshow(grayImage, []);
> title('Original Grayscale Image', 'FontSize', fontSize);
> set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
> message = sprintf('Left click and hold to begin drawing.\nSimply lift the mouse button to finish');
> uiwait(msgbox(message));
> hFH = imfreehand();
>
> % Create a binary image ("mask") from the ROI object.
> binaryImage = hFH.createMask();
> % Display the freehand mask.
> subplot(2, 2, 2);
> imshow(binaryImage);
> title('Binary mask of the region', 'FontSize', fontSize);
>
> % Calculate the area, in pixels, that they drew.
> numberOfPixels1 = sum(binaryImage(:))
> % Another way to calculate it that takes fractional pixels into account.
> numberOfPixels2 = bwarea(binaryImage)
>
> % Get coordinates of the boundary of the freehand drawn region.
> structBoundaries = bwboundaries(binaryImage);
> xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
> x = xy(:, 2); % Columns.
> y = xy(:, 1); % Rows.
> subplot(2, 2, 1); % Plot over original image.
> hold on; % Don't blow away the image.
> plot(x, y, 'LineWidth', 2);
>
> % Burn line into image by setting it to 255 wherever the mask is true.
> burnedImage = grayImage;
> burnedImage(binaryImage) = 255;
> % Display the image with the mask "burned in."
> subplot(2, 2, 3);
> imshow(burnedImage);
> title('New image with mask burned into image', 'FontSize', fontSize);
>
> % Mask the image and display it.
> % Will keep only the part of the image that's inside the mask, zero outside mask.
> maskedImage = grayImage;
> maskedImage(~binaryImage) = 0;
> subplot(2, 2, 4);
> imshow(maskedImage);
> title('Masked Image', 'FontSize', fontSize);
>
> % Calculate the mean
> meanGL = mean(maskedImage(binaryImage));
>
> % Report results.
> message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ...
> meanGL, numberOfPixels1, numberOfPixels2);
> msgbox(message);



thanks a lot.
imfreehand is not selecting the region. it gives error like........

Error in ==> roiParseInputs at 29
iptchecknargin(low,high,nargin_client,client_name);

Error in ==> imfreehand at 166
[commonArgs,specificArgs] = roiParseInputs(1,5,varargin,mfilename,{'Closed'});

Error in ==> freehandarea at 21
hFH = imfreehand();
From: saurabh pandey on
"saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1eblp$nt4$1(a)fred.mathworks.com>...
> "Image Analyst" <imageanalyst(a)mailinator.com> wrote in message <i1cerh$7fv$1(a)fred.mathworks.com>...
> > "saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1bevk$rfv$1(a)fred.mathworks.com>...
> > > thanks for your response. i have R2007b version of matlab.so i cant run your code.
> > > suppose i am doing like this.
> > ----------------------------------------------------------------------------------------
> > Come on, you're just not trying very hard. Did you read the documentation about regionprops? You just don't pass in the gray image if you have an old version. In my uploaded code I gave comments on what to do for old versions. You can do it the way you did if you want, or since you know r2, you can just calculate the area directly, without ever evn calling bwlabel or regionprops. Here's another demo where I use imfreehanddraw to calculate the area and mean of the drawn area:
> > IMPORTANT: BE SURE TO JOIN ANY LINES SPLIT INTO TWO BY THE NEWSREADER!
> >
> > % Change the current folder to the folder of this m-file.
> > % (The line of code below is from Brett Shoelson of The Mathworks.)
> > if(~isdeployed)
> > cd(fileparts(which(mfilename)));
> > end
> > clc; % Clear command window.
> > clear; % Delete all variables.
> > close all; % Close all figure windows except those created by imtool.
> > imtool close all; % Close all figure windows created by imtool.
> > workspace; % Make sure the workspace panel is showing.
> > fontSize = 20;
> >
> > % Read in standard MATLAB gray scale demo image.
> > grayImage = imread('cameraman.tif');
> > subplot(2, 2, 1);
> > imshow(grayImage, []);
> > title('Original Grayscale Image', 'FontSize', fontSize);
> > set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
> > message = sprintf('Left click and hold to begin drawing.\nSimply lift the mouse button to finish');
> > uiwait(msgbox(message));
> > hFH = imfreehand();
> >
> > % Create a binary image ("mask") from the ROI object.
> > binaryImage = hFH.createMask();
> > % Display the freehand mask.
> > subplot(2, 2, 2);
> > imshow(binaryImage);
> > title('Binary mask of the region', 'FontSize', fontSize);
> >
> > % Calculate the area, in pixels, that they drew.
> > numberOfPixels1 = sum(binaryImage(:))
> > % Another way to calculate it that takes fractional pixels into account.
> > numberOfPixels2 = bwarea(binaryImage)
> >
> > % Get coordinates of the boundary of the freehand drawn region.
> > structBoundaries = bwboundaries(binaryImage);
> > xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
> > x = xy(:, 2); % Columns.
> > y = xy(:, 1); % Rows.
> > subplot(2, 2, 1); % Plot over original image.
> > hold on; % Don't blow away the image.
> > plot(x, y, 'LineWidth', 2);
> >
> > % Burn line into image by setting it to 255 wherever the mask is true.
> > burnedImage = grayImage;
> > burnedImage(binaryImage) = 255;
> > % Display the image with the mask "burned in."
> > subplot(2, 2, 3);
> > imshow(burnedImage);
> > title('New image with mask burned into image', 'FontSize', fontSize);
> >
> > % Mask the image and display it.
> > % Will keep only the part of the image that's inside the mask, zero outside mask.
> > maskedImage = grayImage;
> > maskedImage(~binaryImage) = 0;
> > subplot(2, 2, 4);
> > imshow(maskedImage);
> > title('Masked Image', 'FontSize', fontSize);
> >
> > % Calculate the mean
> > meanGL = mean(maskedImage(binaryImage));
> >
> > % Report results.
> > message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ...
> > meanGL, numberOfPixels1, numberOfPixels2);
> > msgbox(message);
>
>
>
> thanks a lot.
> imfreehand is not selecting the region. it gives error like........
>
> Error in ==> roiParseInputs at 29
> iptchecknargin(low,high,nargin_client,client_name);
>
> Error in ==> imfreehand at 166
> [commonArgs,specificArgs] = roiParseInputs(1,5,varargin,mfilename,{'Closed'});
>
> Error in ==> freehandarea at 21
> hFH = imfreehand();


also i am calculating area of object using bwarea. it gives in format
4.5299e+004. can i change its format so that it display 45299. actually i am new in matlab.i dont know every commond.
From: saurabh pandey on
"saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1eblp$nt4$1(a)fred.mathworks.com>...
> "Image Analyst" <imageanalyst(a)mailinator.com> wrote in message <i1cerh$7fv$1(a)fred.mathworks.com>...
> > "saurabh pandey" <sathiya_saurabh(a)yahoo.co.in> wrote in message <i1bevk$rfv$1(a)fred.mathworks.com>...
> > > thanks for your response. i have R2007b version of matlab.so i cant run your code.
> > > suppose i am doing like this.
> > ----------------------------------------------------------------------------------------
> > Come on, you're just not trying very hard. Did you read the documentation about regionprops? You just don't pass in the gray image if you have an old version. In my uploaded code I gave comments on what to do for old versions. You can do it the way you did if you want, or since you know r2, you can just calculate the area directly, without ever evn calling bwlabel or regionprops. Here's another demo where I use imfreehanddraw to calculate the area and mean of the drawn area:
> > IMPORTANT: BE SURE TO JOIN ANY LINES SPLIT INTO TWO BY THE NEWSREADER!
> >
> > % Change the current folder to the folder of this m-file.
> > % (The line of code below is from Brett Shoelson of The Mathworks.)
> > if(~isdeployed)
> > cd(fileparts(which(mfilename)));
> > end
> > clc; % Clear command window.
> > clear; % Delete all variables.
> > close all; % Close all figure windows except those created by imtool.
> > imtool close all; % Close all figure windows created by imtool.
> > workspace; % Make sure the workspace panel is showing.
> > fontSize = 20;
> >
> > % Read in standard MATLAB gray scale demo image.
> > grayImage = imread('cameraman.tif');
> > subplot(2, 2, 1);
> > imshow(grayImage, []);
> > title('Original Grayscale Image', 'FontSize', fontSize);
> > set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
> > message = sprintf('Left click and hold to begin drawing.\nSimply lift the mouse button to finish');
> > uiwait(msgbox(message));
> > hFH = imfreehand();
> >
> > % Create a binary image ("mask") from the ROI object.
> > binaryImage = hFH.createMask();
> > % Display the freehand mask.
> > subplot(2, 2, 2);
> > imshow(binaryImage);
> > title('Binary mask of the region', 'FontSize', fontSize);
> >
> > % Calculate the area, in pixels, that they drew.
> > numberOfPixels1 = sum(binaryImage(:))
> > % Another way to calculate it that takes fractional pixels into account.
> > numberOfPixels2 = bwarea(binaryImage)
> >
> > % Get coordinates of the boundary of the freehand drawn region.
> > structBoundaries = bwboundaries(binaryImage);
> > xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
> > x = xy(:, 2); % Columns.
> > y = xy(:, 1); % Rows.
> > subplot(2, 2, 1); % Plot over original image.
> > hold on; % Don't blow away the image.
> > plot(x, y, 'LineWidth', 2);
> >
> > % Burn line into image by setting it to 255 wherever the mask is true.
> > burnedImage = grayImage;
> > burnedImage(binaryImage) = 255;
> > % Display the image with the mask "burned in."
> > subplot(2, 2, 3);
> > imshow(burnedImage);
> > title('New image with mask burned into image', 'FontSize', fontSize);
> >
> > % Mask the image and display it.
> > % Will keep only the part of the image that's inside the mask, zero outside mask.
> > maskedImage = grayImage;
> > maskedImage(~binaryImage) = 0;
> > subplot(2, 2, 4);
> > imshow(maskedImage);
> > title('Masked Image', 'FontSize', fontSize);
> >
> > % Calculate the mean
> > meanGL = mean(maskedImage(binaryImage));
> >
> > % Report results.
> > message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ...
> > meanGL, numberOfPixels1, numberOfPixels2);
> > msgbox(message);
>
>
>
> thanks a lot.
> imfreehand is not selecting the region. it gives error like........
>
> Error in ==> roiParseInputs at 29
> iptchecknargin(low,high,nargin_client,client_name);
>
> Error in ==> imfreehand at 166
> [commonArgs,specificArgs] = roiParseInputs(1,5,varargin,mfilename,{'Closed'});
>
> Error in ==> freehandarea at 21
> hFH = imfreehand();


also i am calculating area of object using bwarea. it gives in format
4.5299e+004. can i change its format so that it display 45299. actually i am new in matlab.i dont know every commond.
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5
Prev: mse
Next: UDP communication with dynamic server port