issue in converting matrix to rgb image
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I was trying to replace pixel values by their corresponding 3x3 non overlapping block. since the output matrix was of type double I converted it to uint8 type.
But when I displayed the image in the figure window it was gray instead of coloured image . I tried cat(3, gray, gray, gray) but image is still colourless.
What did I do wrong?
img= imread('C:\Users\prach\MATLAB programs\Lenna_(test_image).png');
new = blockproc(img, [10 10], fun);
new1= uint8(new);
imshow(new1)
rgbnew= cat(3, new1, new1, new1);
imshow(rgbnew)
7 comentarios
Walter Roberson
el 11 de Mayo de 2020
sounds like you are using a slightly older version of MATLAB that does not permit multiple dimensions. In that case as long as the image grayscale, median(block_struct.data(:))
But if you are dealing with rgb then it gets a bit messier,
median(reshape(block_struct.data,[],1,3),1)
Respuestas (1)
Image Analyst
el 10 de Mayo de 2020
You need to use imsplit() to get the individual color channels, and then process them and combine them with cat(3).
4 comentarios
Image Analyst
el 11 de Mayo de 2020
The blockproc_color_means.m demo gives this image. Is it like you want?

Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!