Prev: Publish function
Next: Database connectivity
From: Aydos R on 5 Jul 2010 05:53 hi there, I would like to extract the necessary image from background manually by using MATLAB...instead of using imcrop function I am looking for more like a tool which is called " lasso tool " exists on Adobe Photoshop...Is there any specific command or easy way for doing this on Matlab?Thanks in advance, regards
From: Aydos R on 6 Jul 2010 05:21 any ideas ?
From: ImageAnalyst on 6 Jul 2010 07:58 On Jul 6, 5:21 am, "Aydos R" <buralardab...(a)hotmail.com> wrote: > any ideas ? ------------------------------------------------------ Use imfreehand(). See my demo below: % 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.\nLift 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); % 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)); message = sprintf('Mean value within drawn area = %.3f', meanGL); msgbox(message);
From: Aydos R on 6 Jul 2010 09:35 thanks for replying...I've copied the codes to a m-file called "lasso_demo.m" but I get these error messages when I click OK to message box...and left-click does not work for drawing... ??? Error using ==> iptchecknargin at 57 Function IMFREEHAND expected at least 1 input argument but was called instead with 0 input arguments. 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 ==> lasso_demo at 23 hFH = imfreehand(); **************************************************************** ImageAnalyst <imageanalyst(a)mailinator.com> wrote in message <b50b61cd-c70b-470f-b59c-a67418f5ed3b(a)s9g2000yqd.googlegroups.com>... > On Jul 6, 5:21 am, "Aydos R" <buralardab...(a)hotmail.com> wrote: > > any ideas ? > ------------------------------------------------------ > Use imfreehand(). See my demo below: > > % 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.\nLift 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); > > % 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)); > message = sprintf('Mean value within drawn area = %.3f', meanGL); > msgbox(message);
From: Aydos R on 8 Jul 2010 08:18
still looking for a solution ... |