Image 在Matlab中将图像颜色映射更改为deuteranopia

Image 在Matlab中将图像颜色映射更改为deuteranopia,image,matlab,imshow,colormap,Image,Matlab,Imshow,Colormap,长期以来,我一直在尝试使用定制的256x3彩色地图来更改图像的彩色地图,以将“正常视力”的人的印象切换为一个患有deuteranopia红绿盲的人可以看到的印象 颜色贴图已经创建,但我无法将其应用于原始图像 代码 load('ColormapsDefVis.mat') fig=figure a=imread('Regenbogen.png'); [b map]=rgb2ind(a,256); c=ind2rgb(b, DeuteranopiaColorMap); imshow(c); 不

长期以来,我一直在尝试使用定制的256x3彩色地图来更改图像的彩色地图,以将“正常视力”的人的印象切换为一个患有deuteranopia红绿盲的人可以看到的印象

颜色贴图已经创建,但我无法将其应用于原始图像

代码

load('ColormapsDefVis.mat')

fig=figure
a=imread('Regenbogen.png');

[b map]=rgb2ind(a,256);

c=ind2rgb(b, DeuteranopiaColorMap);
imshow(c);
不如

load('ColormapsDefVis.mat')
fig=figure
a=imread('Regenbogen.png');

imshow(a);

set(fig,'Colormap',DeuteranopiaColorMap)
没有

有人知道如何正确更改自定义颜色贴图吗


我将非常感谢你的帮助

第一批代码有效。你一定是犯了一个错误,或者是错误地解释了结果

我建议你考虑一下。确保您的图像是unit8或single。此外,您可能不知道会发生什么样的抖动,所以我建议您使用rgb2inda,256,“nodither”。抖动的结果可能会欺骗你的眼睛,但我们无法知道,因为你没有发布任何图像

要让自己相信rgb2ind是有效的,请参阅下面的代码。你应该能够在你的计算机上测试它

img=imread('cameraman.tif');
indimg=img;
cmap=hsv(255); % colromap 1
cmap2=cmap(end:-1:1,:);  % colromap 2
subplot(121);
c=ind2rgb(indimg,cmap );
imshow(c)
subplot(122);
c2=ind2rgb(indimg,cmap2 );
imshow(c2)

非常感谢您的帮助Ander,使用彩色贴图的方法并不是我所寻找的有效解决方案。虽然我相信它也会起作用,但有一种更容易解决问题的方法:

为了得到红绿盲的印象,我认为患有这种疾病的人不能区分红色和绿色的物体。所以我的解决方案是在两个通道中绘制红色和绿色RGB图像通道的平均值,使它们无法区分

a=imread('peppers.png');
figure,
subplot(121)
imshow(a)
c=(a(:,:,1)+a(:,:,2))/2; %Mean value between channel red and green
a(:,:,1)=c; %Switch the red channel to the mean
a(:,:,2)=c; %Switch the green channel to the mean
subplot(122)
imshow(a)
不幸的是,stackoverflow拒绝我上传图像,因为我没有足够的声誉,但代码应该使用任何RGB图像,例如内置演示图像“peppers.png”


希望这对其他人也有帮助

第一个代码snipet对我有用。。。。。当然,只是用我自己的数据,但它是有效的。。。