Cropping an image using imfreehand()
1 view (last 30 days)
Show older comments
I want to crop the ROI from an image using imfreehand() but I am not able to. How can I crop an using imfreehand(). Would cropping the ROI also affect the qualtiy of the ROI as a whole. If it would affect the ROI then what is the solution?
imshow('cameraman.png');
h = imfreehand();
position = wait(h);
What am I supposed to do after this to get the ROI without losing the quality? Thanks in advance.
0 Comments
Accepted Answer
Image Analyst
on 6 Dec 2019
Try this:
grayImage = imread('cameraman.tif');
imshow(grayImage);
subplot(1, 2, 1);
imshow(grayImage);
fontSize = 20;
title('Double click inside to accept it.', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, 0.96]);
promptMessage = sprintf('Click and drag out a region.\nDouble click inside to quit.\nor Quit processing?');
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Draw', 'Quit', 'Draw');
if contains(buttonText, 'Quit')
return;
end
h = imfreehand();
position = wait(h)
% Make integers
position = round(position);
% Find cropping limits.
col1 = min(position(:, 1))
col2 = max(position(:, 1))
row1 = min(position(:, 2))
row2 = max(position(:, 2))
% Do the crop
croppedImage = grayImage(row1:row2, col1:col2);
% Show the cropped image.
subplot(1, 2, 2);
imshow(croppedImage);
title('Cropped Image', 'FontSize', fontSize);
3 Comments
Image Analyst
on 7 Dec 2019
The image is NOT deteriorated after cropping. You still have the original pixels. It only looks pixelated because it's magnified for display.
It is usually not necessary for you to extract/crop the subimage to do image analysis on it. I usually don't unless I need to do something like doing OCR and need to get one character or one band of text in an image.
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!