在matlab中将两个变量图像存储在一个变量中

时间:2015-03-31 04:00:16

标签: matlab variables

我有一张RGB图像,我使用rgb2index将其转换为索引图像。结果图像存储在两个变量中(作为matlab要求)。但是我希望将它放在一个变量中以便进一步处理。这就是我尝试过的。结果是黑色的。

clc 
clear all
close all

%%

I = imread ('Daniel1_SRGB.png');

[in_I,map] = rgb2ind(I,3,'nodither');
imshow (in_I,map)

imwrite (in_I,map,'new_image.PNG','png')

new_I = imread ('new_image.png');

imshow((new_image));

但如果做imshow((new_image,map))它给了我正确的答案。我希望它独立于变量映射。

2 个答案:

答案 0 :(得分:3)

要将索引图像转换为RGB,请使用:

new_I = ind2rgb(in_I,map)

答案 1 :(得分:1)

不是最优雅的解决方案,但这有效。

resR = reshape(map(in_I(:)+1,1), size(in_I));
resG = reshape(map(in_I(:)+1,2), size(in_I));
resB = reshape(map(in_I(:)+1,3), size(in_I));
res = cat(3, resR, resG, resB);

imshow(res);

编辑:修改后的答案,包括光线改进。