Extract pixel values inside a Binary Mask
Afficher commentaires plus anciens
I have an image and the ROI points. I did the following to extract the ROI by creating a binary mask with poly2mask. now I want to extact the values of masked image.
My problem is that I cannot retain zeros inside the masked image using the code below. Could you please help me?
S = size(img); % Size of the binary masked
bw = poly2mask(x,y,S(1),S(2)); % Create a binary mask
ROI = img;
ROI(bw == 0) = 0;
ROI = ROI(ROI>0); % Just keep the non-zero values
Réponses (1)
since you already created a binary mask you can just index multiply " .* " the mask with the original image as outside is 0 and inside the mask is 1.
%dummy image for example
img = imread('pears.png');
bwimg = single(rgb2gray(img));
[r c]=size(bwimg);
figure(1),subplot(131),imagesc(bwimg); colormap gray
title('original image')
%dummy mask gen for example
x = c*rand(1,4);
y = r*rand(1,4);
x(end+1) = x(1);
y(end+1) = y(1);
%create mask
bw = poly2mask(x,y,r,c);
subplot(132),imagesc(bw);colormap gray
title('mask')
%extractROI
%index multiply image with mask as outside is 0 and inside is 1
ROI=bwimg.*bw;
subplot(133),imagesc(ROI);colormap gray;title('Mask applied')
Catégories
En savoir plus sur Region and Image Properties dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
