how to crop the grayscale image and find the cropped area and save

3 ビュー (過去 30 日間)
andhavarapu lokesh
andhavarapu lokesh 2016 年 12 月 8 日
コメント済み: Image Analyst 2016 年 12 月 8 日
i have a dicomimage i need to crop a particular area after finding the boundaries and applying skeletonisation
if true % code function croppedImage=getpix(grayImage,stringname) % Demo to have the user freehand draw an irregular shape over % a gray scale image, have it extract only that part to a new image, % and to calculate the mean intensity value of the image within that shape. % By ImageAnalyst % Change the current folder to the folder of this m-file. if(~isdeployed) cd(fileparts(which(mfilename))); end
% Make sure the workspace panel is showing. fontSize = 16; % Read in standard MATLAB gray scale demo image. %grayImage = imread('cameraman.tif'); % for i=2:10 % % I = otsuthres(grayImage,i); % IDX = otsu(grayImage,i) % end
figure; imshow(grayImage, []); %imshow(IDX,[]);
% %%%CODE%%%% % imc_figure = imcontrast(gca) %// Perform imcontrast % waitfor(imc_figure); %// Wait for the data to be updated in the current figure % grayImage = getimage(gcf);%// image data stored into image_data variable % % %%%CODE%%%%
title(stringname, 'FontSize', fontSize); set(gcf, 'Position', get(0,'Screensize')); % Maximize figure. message = sprintf('Left click and hold to begin free hand 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. % 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, 3, 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, 3, 3); % imshow(burnedImage); % caption = sprintf('New image with\nmask burned into image'); % title(caption, 'FontSize', fontSize); % Mask the image and display it. % Will keep only the part of the image that's inside the mask, zero outside mask. blackMaskedImage = grayImage; blackMaskedImage(~binaryImage) = 0; % subplot(2, 3, 4); % imshow(blackMaskedImage); % title('Masked Outside Region', 'FontSize', fontSize); % Calculate the mean meanGL = mean(blackMaskedImage(binaryImage)); % Report results. % message = sprintf('Mean value within drawn area = %.3f\nNumber of pixels = %d\nArea in pixels = %.2f', ... % meanGL, numberOfPixels1, numberOfPixels2); % msgbox(message); % Now do the same but blacken inside the region. insideMasked = grayImage; insideMasked(binaryImage) = 0; % subplot(2, 3, 5); % imshow(insideMasked); % title('Masked Inside Region', 'FontSize', fontSize); % Now crop the image. topLine = min(x); bottomLine = max(x); leftColumn = min(y); rightColumn = max(y); width = bottomLine - topLine + 1; height = rightColumn - leftColumn + 1; croppedImage = imcrop(blackMaskedImage, [topLine, leftColumn, width, height]); % Display cropped image. % subplot(2, 3, 6); % imshow(croppedImage); % title('Cropped Image', 'FontSize', fontSize); close; end

回答 (0 件)

カテゴリ

Help Center および File ExchangeImport, Export, and Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by