ファイルに入っている​tifファイルをまと​めてグレースケールと​して保存するやり方が​分かりません

18 Ansichten (letzte 30 Tage)
thuru
thuru am 15 Jan. 2017
Beantwortet: Tohru Kikawada am 20 Jan. 2017
下記のようにSeries1というファイルに入ったtifファイルをまとめて読み込んだのですが、これらをグレースケールにするやり方が分かりません。rgb2gray関数を使用したのですがエラーがでしまいます。
fileFolder = fullfile(pwd,'Series1'); % 画像の読込み (67枚の断面画像)
files = dir(fullfile(fileFolder,'*.tif'));
fileNames = {files.name};
info = imfinfo(fullfile(fileFolder,fileNames{1}));
numImages = length(fileNames);
tif = zeros(info. Width, info.Height, numImages, 'uint16');
for i=length(fileNames):-1:1
fname = fullfile(fileFolder,fileNames{i});
tif(:,:,i) = uint16(imread(fname));
end
imtool close all;
D = reshape(uint16(tif), [size(tif,1), size(tif,2), 1, size(tif,3)]);
figure; montage(D,'DisplayRange',[]); % D は、128x128x1x15 の配列(x1は、グレースケールの為)
  4 Kommentare
thuru
thuru am 18 Jan. 2017
上記のプログラムの、for文の上のtifを grayscale = rgb2gray(tif); としたところ上記のエラーが出ました。

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Tohru Kikawada
Tohru Kikawada am 20 Jan. 2017
ちょっと状況が飲み込めていませんが、読み込む際にグレイスケールに変換したいのであれば下記の方法で実現できると思います。
ご参考になれば幸いです。
fileFolder = fullfile(pwd,'Series1'); % 画像の読込み (67枚の断面画像)
files = dir(fullfile(fileFolder,'*.tif'));
fileNames = {files.name};
info = imfinfo(fullfile(fileFolder,fileNames{1}));
numImages = length(fileNames);
tif = zeros(info.Width, info.Height, numImages, 'uint16');
for i=length(fileNames):-1:1
fname = fullfile(fileFolder,fileNames{i});
tif(:,:,i) = rgb2gray(uint16(imread(fname)));
end
imtool close all;
D = reshape(uint16(tif), [size(tif,1), size(tif,2), 1, size(tif,3)]);
figure; montage(D,'DisplayRange',[]); % D は、128x128x1x15 の配列(x1は、グレースケールの為)

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by