我已经尝试了很长时间使用自定义的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)
没有。
有谁知道如何正确更改自定义色彩图?
非常感谢你的帮助!
答案 0 :(得分:0)
代码的第一个工作原理。你必须犯错误或错误地解释结果。
我建议你看一件事。确保您的图片为unit8
或single
。另外,你可能不会发生什么事情,所以我建议你做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)
答案 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'。
希望这对其他人也有帮助!