From: mayank verma on 1 Aug 2010 12:15 hi! i m doing a project under image processing. can anyone please tell me how to perform face masking 0f a greyscale image.
From: ImageAnalyst on 1 Aug 2010 12:39 On Aug 1, 12:15 pm, "mayank verma" <mayankverma1...(a)gmail.com> wrote: > hi! i m doing a project under image processing. can anyone please tell me how to perform face masking 0f a greyscale image. ----------------------------------------------------------- See my demo: 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);
|
Pages: 1 Prev: Purpose of matscale in Control Toolbox Next: cell concatenation problem |