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

时间:2014-12-15 16:58:22

标签: image matlab imshow colormap

我已经尝试了很长时间使用自定义的256x3色彩图来更改我的图像色彩图,以改变正常视力'一个人患有绿色盲症(红绿色盲)的人可以看到。

已经创建了色彩映射,但我绝不会将其应用于原始图像。

代码

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)

没有。

有谁知道如何正确更改自定义色彩图?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

代码的第一个工作原理。你必须犯错误或错误地解释结果。

我建议你看一件事。确保您的图片为unit8single。另外,你可能不会发生什么事情,所以我建议你做rgb2ind(a,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)

enter image description here

答案 1 :(得分:0)

非常感谢你对Ander的帮助,使用colormaps的方法并不是我想要的有效解决方案。虽然我相信它也会起作用,但有一种方法可以更容易地解决问题:)

为了获得红绿盲目的印象,我认为患有这种病症的人无法区分红色和绿色物体。所以我的解决方案是绘制两个通道中红色和绿色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'。

希望这对其他人也有帮助!