Effacer les filtres
Effacer les filtres

Masked image displaying wrong intensity

4 vues (au cours des 30 derniers jours)
Fotaras Sitof
Fotaras Sitof le 21 Sep 2017
Commenté : Fotaras Sitof le 21 Sep 2017
Hey guys,
I have a 3D image: [256x256x160] and a mask: [256x256x160]. The mask is a binary image of 0 and 255. After applying the mask on the image:
if true
% masked_image = image.*mask;
end
I get a masked_image that has totally wrong intensity values. In fact, its values are nowhere to be found on the original image. They are just too big. All I want to achieve is extract the original image's intensities at the location of the mask and calculate the mean value of that ROI. I can see from 'imshow' that the mask is aligned properly on the image. However, applying the mask is unsuccessful and I don't understand why.
Many thanks for your help.

Réponse acceptée

OCDER
OCDER le 21 Sep 2017
Modifié(e) : OCDER le 21 Sep 2017
Try this instead, which will select only the pixels in image dictated by the mask:
%to get the masked image without changing the dimension of the image
masked_image = image.*(mask > 0);
%or if you want just the pixels
masked_image_pixels = image(mask > 0);
Note that mask should really be a logical array, not a uint8 array, which is what (mask > 0) is taking care of for you.
In your original code, the issue is that you are using a uint8 mask matrix to multiply element-by-element with the image matrix. This means doing the following:
image .* mask
(value from the image matrix) x (255 or 0 from the "binary" uint8 mask matrix)
which would explain the large numbers.
  1 commentaire
Fotaras Sitof
Fotaras Sitof le 21 Sep 2017
Thanks for the clarification. It makes sense now. After the mask was converted to 0 and 1 rather than 0 and 255 the extracted ROIs have proper values.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by