How to make an image take different RGB values?

4 visualizaciones (últimos 30 días)
Abdul Rahim Mohammad
Abdul Rahim Mohammad el 10 de Abr. de 2019
Comentada: Abdul Rahim Mohammad el 11 de Abr. de 2019
I have an image with NxMx3 uint8 colors but I want the colors of the image to be replaced with another array of 256x3(Each column corresponds to R,G,B values) colors. How can I map the values from the array to the image?
I was advised that I need to split the 3 channels and then map them independently

Respuesta aceptada

Jan
Jan el 10 de Abr. de 2019
Editada: Jan el 10 de Abr. de 2019
LUT = randi([0, 255], 256, 3, 'uint8'); % The look up table
Img = randi([0, 255], 640, 480, 3, 'uint8'); % The image
NewImg = cat(3, LUT(Img(:, :, 1) + 1, 1), ...
LUT(Img(:, :, 2) + 1, 2), ... % [EDITED, 3 ==> 2]
LUT(Img(:, :, 3) + 1, 3));
This replaces the original colors by the ones from the look up table by a simple indexing. See this example:
LUT = [2, 4, 8]
Img = [0, 1; 2, 1];
LUT(Img + 1)
  9 comentarios
Guillaume
Guillaume el 11 de Abr. de 2019
Jan made a typo. Replace resize by reshape and all will be well.
Abdul Rahim Mohammad
Abdul Rahim Mohammad el 11 de Abr. de 2019
Edit: I got it working, NewImag = reshape(NewImg,size(img)); works to reshape the array into my desired dimensions.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by