グレースケール画像をRGBスケールに変更

38 次查看(过去 30 天)
koki mori
koki mori 2020-6-21
评论: Kenta 2020-6-22
現在セマンティックセグメンテーション用にグレースケール画像を用いた学習を行っています。
ですが、諸事情により上手く動かないため、画像を一度グレースケールをRGBスケールに変更しようと思ったのですが、可能なのでしょうか?
具体例:
グレースケール画像のピクセル値が以下だったとする
画像A
[2 2 2]
[1 1 1]
[3 3 3]
[7 7 7]
これを自分が指定したRGBのピクセル値に変更して
画像A
[192 192 192]
[003 192 192]
[100 100 150]
[050 100 255]
のようにしたいです。
宜しくお願い致します。

采纳的回答

Kenta
Kenta 2020-6-22
clear;clc;
IDlist=[0 51 102 153 204 255];
RGBlist=[255 0 0;0 255 0;0 0 255;255 255 0;0 255 255; 255 0 255];
info=dir('*.png');
names={info.name};
for i=1:numel(names)
I=imread(names{i});
sz=size(I);
I2=I(:,:,1);
IsaveR=zeros(sz(1:2));
IsaveG=zeros(sz(1:2));
IsaveB=zeros(sz(1:2));
for j=1:numel(IDlist)
idx=find(I2==IDlist(j));
IsaveR(idx)=RGBlist(j,1);
IsaveG(idx)=RGBlist(j,2);
IsaveB(idx)=RGBlist(j,3);
end
Isave=uint8(cat(3,IsaveR,IsaveG,IsaveB));
imwrite(Isave,['rgbLabel_',names{i}])
end
figure;imshowpair(I2,Isave,'montage')
こんにちは、例えば上のように書くと、ID⇒RGBが変換できます。もう少し短縮もできるかとは思いますが、
読みやすさも考えて以上のようにしました。IDのPNGファイルがあるディレクトリで実行すれば大丈夫と思います。
このように変換すると、公式ドキュメントにそのままあてはめることが可能と思います。左の練習用のID画像は添付のコードで作成しています。
  2 个评论
koki mori
koki mori 2020-6-22
早速やってみた所、上手くスケール変換をする事ができました。
また何かありましたら質問させていただきます。
ありがとうございました。
Kenta
Kenta 2020-6-22
おお、きれいにできてますね!よかったです。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!