MATLAB: How to fill a ROI without affecting outside

fillImage Processing Toolboximfill

Hi
I want to specify an ROI (of a binary image) on screen (several times) and make its inside white but do not change the outside. How can I do so?
I used imfill, but it gives me only the choice of choosing one point.
How can I determine the locations (specified by the user on screen) for imfill?
I tried to use this simple code, but it does not do what I want:
Image=binaryImage;
ROI = imfreehand();
ROI_xy = floor(hFH.getPosition)
Image(ROI_xy)=1;
I also used
Image=imfill(Image,ROI_xy);
but it didn't work either.
Could someone help me please with this?
Thanks. Steven

Best Answer

  • I thought I already showed you in a prior question where I attached my demo (attached again). Anyway, you need to get the binary mask:
    hFH = imfreehand();
    % Create a binary image ("mask") from the ROI object.
    binaryImage = hFH.createMask();
    Then use it to make the image white:
    grayImage(binaryImage) = 255;
    By the way, don't use Image as the name of a variable since image is the name of a built-in function and it will be confusing.