Draw multiple regions on an image- imfreehand

半世苍凉 提交于 2019-12-04 04:06:15

问题


I'd like to manually draw multiple regions on an image to create a binary mask of the drawn regions (ground truth).

I attached the code to do it using imfreehand that does the job for one region, but once in release the mouse button, binary mask for that single region is displayed. Is there a way to draw multiple regions and then display the binary mask? (Calling imfreehand multiple times may not work because the number of regions varies with each image).

h= imfreehand();

h = imfreehand(gca);
setColor(h,'red');

position = wait(h); 
BW = createMask(h);
figure,imshow(BW);
axis on;

Thanks.


回答1:


You can loop until you get an empty mask - this will indicate that the user finished drawing all masks.
Let sz be the desired size of the output mask, then

totMask = false( sz ); % accumulate all single object masks to this one
h = imfreehand( gca ); setColor(h,'red');
position = wait( h );
BW = createMask( h );
while sum(BW(:)) > 10 % less than 10 pixels is considered empty mask
      totMask = totMask | BW; % add mask to global mask
      % you might want to consider removing the old imfreehand object:
      delete( h ); % try the effect of this line if it helps you or not.

      % ask user for another mask
      h = imfreehand( gca ); setColor(h,'red');
      position = wait( h );
      BW = createMask( h );
end
% show the resulting mask
figure; imshow( totMask ); title('multi-object mask');



回答2:


As a complement to the answer given by @Shai, you can also use the input() function in Matlab to prompt the user for the total number of masks needed or simply as a yes/no question in a while loop. That is, either:

imshow(img,[]) %display image to determine number of masks needed
n = input('How many masks are needed? ')  %Ask user for number of masks needed
for i=1:n
    create multiple masks...
end

or

n=1;
while(n==1)
     create mask ...
     n = input('Need more masks? [0=No, 1=Yes] ')
end


来源:https://stackoverflow.com/questions/23463516/draw-multiple-regions-on-an-image-imfreehand

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!