How to retrieval back the color in particular area from original image?
1 view (last 30 days)
Show older comments
13100.jpg
colorImage = imread('13100.jpg');
grayImage = rgb2gray(colorImage);
mserRegions = detectMSERFeatures(grayImage);
mserRegionsPixels = vertcat(cell2mat(mserRegions.PixelList));
mserMask = false(size(grayImage));
ind = sub2ind(size(mserMask), mserRegionsPixels(:,2), mserRegionsPixels(:,1));
mserMask(ind) = true;
figure;imshow(mserMask);
MSER mask
How to retrieve back the original color from 13100.jpg and paste into MSER mask (white area)?
0 Comments
Accepted Answer
Guillaume
on 17 Mar 2017
Much simpler:
maskedimage = immultiply(colorImage, repmat(mserMask, [1, 1, size(colorImage, 3)]));
imshow(maskedimage);
Note that if you just want to see if your mask is correct
imshowpair(colorImage, mserMask, 'blend');
may be more useful.
3 Comments
Guillaume
on 18 Mar 2017
That's because you're only setting the red plane to 255, leaving the green and blue plane.
whiteMaskedImage(repmat(~mserMask, 1, 1, 3)) = 255;
would fix this.
More Answers (1)
Image Analyst
on 17 Mar 2017
Try bsxfun():
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!