67枚あるtifファ​イルの256×256​の画像を256×25​6×67の三次元行列​にしたいです

14 Ansichten (letzte 30 Tage)
thuru
thuru am 17 Jan. 2017
Bearbeitet: thuru am 18 Jan. 2017
67枚あるtifファイルの256×256の画像を256×256×67の三次元行列にしたいです 下記のプログラムで、tifファイル1枚1枚をグレースケールに変換したのですが、それらを一つの三次元行列にしたいのですが、cat関数が使えるかなと思って試したのですがfor分の中に上手く組み込むことができず困っています。 clear; clc; close all; % 初期化
fileFolder = fullfile(pwd,'Series1'); % 画像の読込み (67枚の断面画像)
tifFiles = dir(fullfile(fileFolder,'*.tif'));
numfiles = length(tifFiles); mydata = cell(1, numfiles);
for k = 1:numfiles
mydata{k} = imread(tifFiles(k).name);
gray{k} = mat2gray(mydata{k});
end

Akzeptierte Antwort

Tohru Kikawada
Tohru Kikawada am 18 Jan. 2017
下記のようなコードで直接3次元配列に読み込んではいかがでしょうか。
手元に画像がないのでご自身の環境でお試しください。
また、 gray は同名の関数がありますので、変数としては使わないほうが無難です。
fileFolder = fullfile(pwd,'Series1'); % 画像の読込み (67枚の断面画像)
tifFiles = dir(fullfile(fileFolder,'*.tif'));
numfiles = length(tifFiles);
img = imread(tifFiles(1).name);
grayscale = zeros(size(img,1),size(img,2),numfiles);
for k = 2:numfiles
grayscale(:,:,k) = imread(tifFiles(k).name);
end
  4 Kommentare
Tohru Kikawada
Tohru Kikawada am 18 Jan. 2017
省くというのはどういう意味でしょうか。
NaN に置き換えたいという意味であれば、たとえば下記のコードで実現できます。
grayscale(graysclae==32768) = NaN;
もしくは、表示を透過させたいという意味のであれば こちら が参考になるかと思います。
また、グレイスケールが0~255の範囲になるのは入力画像が uint8 型のときです。
今回は uint16 型でRGB画像を取り扱われているので、グレイスケールも uint16 型の範囲で値が出力されます。
画像タイプの変換に関しては こちら も参照してみてください。
thuru
thuru am 18 Jan. 2017
Bearbeitet: thuru am 18 Jan. 2017
省くというのは、今回画像の範囲内の平均値などを求めているのですが、実際に使用したいのは真ん中に表示してある範囲で、周りのグレーの部分をなくしたいのです。 つまり周りを無くして表示したい部分だけの行列にしたいという意味です。 NaN、試してみますありがとうございます。 画像タイプの変換早速行ってみたいと思います。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Measurements and Spatial Audio finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by