issue in converting matrix to rgb image
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
Walter Roberson
2020 年 5 月 11 日
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)
回答 (1 件)
Image Analyst
2020 年 5 月 10 日
You need to use imsplit() to get the individual color channels, and then process them and combine them with cat(3).
4 件のコメント
Image Analyst
2020 年 5 月 11 日
The blockproc_color_means.m demo gives this image. Is it like you want?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292171/image.png)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!