【问题标题】:Change image colormap to deuteranopia in Matlab在Matlab中将图像颜色图更改为deuteranopia
【发布时间】:2015-02-13 20:23:11
【问题描述】:

长期以来,我一直在尝试使用自定义 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)

没有。

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

非常感谢您的帮助!

【问题讨论】:

  • 第一个代码片段对我有用.....当然,只是用我自己的数据,但它有效......

标签: image matlab imshow colormap


【解决方案1】:

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

我建议你看一个东西。确保您的图像是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)

【讨论】:

    【解决方案2】:

    非常感谢您的帮助 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”。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多