2015-03-31 103 views
0

我有一个RGB图像,我使用rgb2index转换为索引图像。结果图像存储在两个变量中(如matlab要求)。但我想把它放在一个变量中作进一步处理。这是我尝试过的。结果是黑色的。将两个变量图像存储在一个变量中的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))它给了我正确的答案。我希望它独立于变量映射。

回答

3

向索引图像转换为RGB使用:

new_I = ind2rgb(in_I,map) 
+1

这是更优雅的方式。 +1 – rayryeng 2015-03-31 19:44:37

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); 

编辑:修改后的答案包括rayryeng的改进。

+2

可以进一步通过执行'解析度=猫减少代码(3,RESR,resG,RESB);'。 – rayryeng 2015-03-31 05:13:07

+0

谢谢它正在为我工​​作 – farhan 2015-03-31 05:58:38

+0

谢谢雷林,我已经编辑了答案,包括您的建议。 – jodag 2015-03-31 15:00:34

相关问题