Avoid for loop to increase processing in image processing.

5 visualizaciones (últimos 30 días)
I have three matrices
labelism is nr x nc binary matrix
colorim is nr x nc x 3 RGB matrix
and skin_img is also nr x nc x 3 RGB matrix with initially all the zeros on it (black image)
I want to use the labelism matrix to create skin_img matrix from colorim matrix.
Following is the code giving perfectly fine answer
for i = 1:nr
for j = 1:nc
if (labelim(i,j) == 1)
skin_img(i,j,:) = colorim(i,j,:);
end
end
end
imshow(uint8(skin_img));
But it is slow for big size images. Is there any way to avoid for loop?

Respuesta aceptada

Alex Mcaulley
Alex Mcaulley el 10 de Jul. de 2019
Editada: Alex Mcaulley el 10 de Jul. de 2019
It is just masking your RGB image. Isn't it?
skin_img = repmat(labelism,[1,1,3]).*colorim;
  1 comentario
Muhammad Farhan  Mughal
Muhammad Farhan Mughal el 10 de Jul. de 2019
Thank you Alex, yes it was about masking. The processing speed has increased a lot.
Thanks again

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices 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