ROI selection without overlap
I’m trying to select several ROI’s from an image using the following code:
for i=1:nbrois
roi3d{i}=roipoly(A);
end
Which works OK…I however, need to be sure that those ROIs don’t overlap with each other. Is there a way of selecting the first ROI, have the program show the polygon on top of the image to select the second ROI and so on? In other words, I want to select the ROIs with all the previous ROIs displayed on the image, is that possible?
NOTE:-
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
There is no built-in function of ROIPOLY, that I know of, that will do this. So, you’ll need to alter your raw image to outline/overlay the regions you have selected. I’ve pasted below a simple loop using my outlining function MASKOUT. You might have better success using a more robust function from the File Exchange like IMOVERLAY.
You won’t be able to run this “as is”. You’ll need to point it to your raw image.
reply = input('Circle regions to [a]dd, [n]ext image? a/n [n]: ', 's');
if isempty(reply)
reply = 'n';
end %loop for each ROI created
while reply == 'a' im2 = imread(char(filenames(1, x))); %raw image
brtemp = false(size(im2, 1), size(im2, 2)); %binary mask of ROIs
timg = maskout(im2, brtemp, 2); if reply == 'a' brtemp = roipoly(timg) | brtemp; %manual interaction to create ROI, add to BRTEMP
timg = maskout(im2, brtemp, 2); %display outline of all masks created reply = input('Circle regions to [a]dd, [r]emove, [n]ext? a/r/n [n]: ', 's');
if isempty(reply) %default reply is N
reply = 'n';
end end
endfunction [imgout] = maskout(imgin, maskin, thickness)
SEE COMPLETE ANSWER CLICK THE LINK