How can I save ROI parameters from DrawFreehand and load it onto another image?
22 views (last 30 days)
Show older comments
Sami Case
on 20 Feb 2021
Commented: Image Analyst
on 23 Feb 2021
I'm working on a programme that analyses the contents within an ROI (such as Mean Grey Intensity). The images i want to measure are not clear enough to draw an ROI, but I have an image that is the same size (160x160px) and I would like to draw the ROI on that image and then display that ROI on the other images. I have the images uploaded in "axes" in the app designer. Any help is appreciated.
2 Comments
Image Analyst
on 20 Feb 2021
Don't you have the variable from drawfreehand()? How did it disappear? Did it go out of scope? If so, save it to a .mat file. Show us how you call it.
Accepted Answer
Image Analyst
on 20 Feb 2021
Here is what I do:
% User draws curve on image here.
hFH = drawfreehand();
% Get the xy coordinates of where they drew.
xy = hFH.Position
% get rid of imfreehand remnant.
delete(hFH);
% Overlay what they drew onto the image.
hold on; % Keep image, and direction of y axis.
xCoordinates = xy(:, 1);
yCoordinates = xy(:, 2);
plot(xCoordinates, yCoordinates, 'r.', 'LineWidth', 2, 'MarkerSize', 12);
caption = sprintf('Original Grayscale Image.\nPoints may not lie on adjacent pixels, depends on your speed of drawing!');
title(caption, 'FontSize', fontSize);
See attached full demo. Once you have xCoordinates and yCoordinates, you can save them and apply them to other images, for example by using them to create a mask with poly2mask().
2 Comments
Image Analyst
on 23 Feb 2021
If you want to create a new RGB image with the mask displayed "burned" into the image, see imoverlay. Otherwise if you want it in the overlay, see these links:
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!