0

私は長い間、カスタム 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)

しなかった。

カスタムカラーマップを正しく変更する方法を知っている人はいますか?

大変お世話になりました!

4

2 に答える 2

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)

ここに画像の説明を入力

于 2014-12-15T17:21:36.097 に答える
0

ご協力ありがとうございました。カラーマップを使用したアプローチは、私が探していた効率的なソリューションではありませんでした。それもうまくいくと確信していますが、問題に対するより簡単な解決策があります:)

赤緑盲の印象を受けるために、この状態に苦しんでいる人は赤みがかったものと緑がかったものを区別できないという考えを取り入れました. したがって、私の解決策は、両方のチャネルで赤と緑の 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 は画像のアップロードを拒否しますが、コードは組み込みのデモ画像 'peppers.png' などの任意の RGB 画像を使用して動作します。

これが他の人にも役立つことを願っています!

于 2014-12-18T11:52:05.967 に答える