Borrar filtros
Borrar filtros

How would you create a mask on an image?

1 visualización (últimos 30 días)
Feynman
Feynman el 5 de Oct. de 2013
Comentada: Image Analyst el 5 de Oct. de 2013
I am doing a project and one of the tasks is to create a matrix with number of pixels x number of pixels x 3 as its size. In the previous task I created a matrix using the green container of the RGB image and I am suppose to duplicate this along the 3 dimensions. My question is what functions would I use in order to do this. I am not allowed to use any implicit functions only explicit.
  6 comentarios
Feynman
Feynman el 5 de Oct. de 2013
I tried implementing the code you suggested and it keeps giving me an error of integers can only be combined with integers of the same class or scale doubles
Image Analyst
Image Analyst el 5 de Oct. de 2013
mark and redChannel have to be the same type of integer like it said. So you'd need to do
maskedRed = redChannel .* uint8(mask);
if redChannel is a uint8.

Iniciar sesión para comentar.

Respuesta aceptada

Image Analyst
Image Analyst el 5 de Oct. de 2013
Here's one method:
% Multiply the mask by each color channel individually.
maskedRed = redChannel .* mask;
maskedGreen = greenChannel .* mask;
maskedBlue = blueChannel .* mask;
% Recombine separate masked color channels into a single, true color RGB image.
maskedRgbImage = cat(3, maskedRed, maskedGreen, maskedBlue);
Here's another method, suggested by Sean D.
% Mask the image.
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask,class(rgbImage)));

Más respuestas (1)

Walter Roberson
Walter Roberson el 5 de Oct. de 2013
repmat() or cat(3,X,X,X)

Categorías

Más información sobre Image Processing Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by