How to retrieval back the color in particular area from original image?

3 visualizzazioni (ultimi 30 giorni)
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)?

Risposta accettata

Guillaume
Guillaume il 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 Commenti
Guillaume
Guillaume il 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.
Mei Synn Tan
Mei Synn Tan il 20 Mar 2017
Modificato: Mei Synn Tan il 20 Mar 2017
Dear Guillaume, It's work and thanks for helping. Have a nice day

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 17 Mar 2017
Try bsxfun():
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
  1 Commento
Mei Synn Tan
Mei Synn Tan il 18 Mar 2017
Modificato: Mei Synn Tan il 18 Mar 2017
Good afternoon to KSSV, Guillaume and Image Analyst, Thanks for helping. Both immultiply & bsxfun function can be use and get the correct result. Thanks and have a nice day.
How to change or convert the black area to white color?

Accedi per commentare.

Categorie

Scopri di più su Modify Image Colors in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by