- 50-255をインデックス付きイメージに変換(0-1にrescaleして205倍して+1する)
- 元の画像で10以下のところを0に。
- [0 0 0;jet(206)]でカラーマップを作成
- imwriteで上記インデックス画像とカラーマップを保存
カラーレンジを反映して画像を保存する
11 ビュー (過去 30 日間)
古いコメントを表示
連番画像(8bit)を読み込み,指定のカラ―レンジを反映させてカラー画像として保存したいです.
やりたいこと
①.表示上のカラーレンジの指定
②.閾値以下の値をノイズとして黒にする.
(⇒カラーレンジを0~255とすると.10以下をすべて黒色に変換する)
③.①②を反映した画像を保存する.
下記のスクリプトを例として修正したいと思います.
for n= 1:5
IMG = imread (['アドレス\No',num2str(n),'.tif']); %画像読みこみ..IMGは8bit
%保存時に反映したいレンジ★
colormap(jet)
cmin = 50;
cmax = 255;
caxis([cmin cmax]);
colorbar
%画像保存.この設定だとカラーレンジは自動=0~255(MIN MAX).↑★の設定は反映されない
newmap=colormap(jet);
imwrite(IMG,newmap,['アドレス\Color_No',num2str(n),'.tif']);
end
0 件のコメント
採用された回答
Shunichi Kusano
2021 年 5 月 5 日
次の方法がありそうです。
1.exportgraphics関数を使う
この方法だとfigureで表示したままの絵が保存できますし、簡単です。が、こちらで試してみたところ axis offにしてもわずかですが周囲に背景色が残ってしまいます。試してみて気になるようであれば次の方法が良いかと思います。
2.インデックス付きイメージとして保存
詳しくは公式ドキュメントの通りですが、やり方としての手順は次の通りです。
% パラメータ決定
cmin = 50;
cmax = 200;
th = 10;
% リスケールしてインデックス画像に変換
imq = rescale(im,"InputMin",cmin,"InputMax",cmax);
imq = uint8(imq * (cmax-cmin)) + 1;
imq(im <= th) = 0; % ノイズ処理
% カラーマップの定義(ゼロは黒、それ以外はjet)
cmap = [0 0 0;jet(cmax-cmin+1)];
% 保存
imwrite(imq,cmap,'test.png');
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!