MATLAB Answers


How to save an image with an overlay mask applied to it?

Asked by Antonio on 3 Feb 2013

Consider the following code

    I = imread('pout.tif'); 
    figure, imshow(I);
    h = imfreehand (gca, 'Closed',false);
    maskColor = getColor(h);
    bwMask = createMask(h);
    ContornoMask = imdilate(bwMask, true(3)) & ~imerode(bwMask, true(3));
    imshow(I, [], 'Colormap', gray(256)); 
    OverlayMask =alphamask(ContornoMask, maskColor, 0.5); %% how do I save the image with the overlay mask applied? 

I don't understand why OverlayMask is a scalar value instead of a logical matrix.

I want to save the image generated by alphamask (<>) as a new image matrix. How can I do this?


Log in to comment.

2 Answers

Answer by Andrew Davis on 6 Feb 2013
 Accepted Answer

Alphamask is a display tool. Your 'OverlayMask' variable is a scalar because alphamask returns a handle to the graphic. If you wanted the logical matrix, you already have it as 'ContornoMask', right?

To save the image with the mask applied, I recommend saveas:

saveas(OverlayMask, 'imagefile', 'jpg')

Or, in general, gcf can be used as a handle to the figure if you like:

saveas(gcf, 'imagefile', 'jpg')

Of course you may choose different file formats including Matlab's 'fig'. If you find alphamask useful, please leave a rating on the file exchange page.


Log in to comment.

Answer by Image Analyst
on 4 Feb 2013

How about saving OverlayMask (which is generated by the alphamask program) with imwrite:

imwrite(OverlayMask, theFullFileName);

Isn't this what you asked?


Unfortunately imwrite will not work in this case because OverlayMask is just a scalar value (representing the graphic handle).

Then just save ContornoMask

imwrite(ContornoMask , theFullFileName);

Log in to comment.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today