三次元行列の作成

조회 수: 27 (최근 30일)
shunya hara
shunya hara 2020년 7월 22일
댓글: Shunichi Kusano 2020년 7월 25일
画像(1000枚)の輝度値を要素とした三次元行列を作成したいです。
cat関数を用いて、画像を三次元に拡張しようと考えたのですが時間がかかります。
もっと早く作成する方法はありますか?
gray スケールの画像1000枚をfor構文とcat関数を用いて一枚ずつ三次元方向にくっつけています。

채택된 답변

Shunichi Kusano
Shunichi Kusano 2020년 7월 22일
b = zeros(m,n,1000);
で始めに1000枚分の行列を確保してから,for文で一枚ずつ画像入れてあげると早くできます。
% sample
img = rand(500,500);
tic
imgall = zeros(500,500,1000);
for i = 1:1000
imgall(:,:,i) = img;
end
toc % 経過時間は 0.936728 秒です。
tic
imgall = img;
for i = 2:1000
imgall = cat(3,imgall,img);
end
toc % 経過時間は 586.288862 秒です。
  댓글 수: 5
shunya hara
shunya hara 2020년 7월 22일
ありがとうございます!!
C=zeros(2048,2048,100)
a=dir(filename)
for n=3:100;
A=imread(a(n).name);
C(;,;,n)=A
end
このプログラムであってますか?
Shunichi Kusano
Shunichi Kusano 2020년 7월 25일
100枚に減らしたんでしょうか。
3から始まっていていいのでしたら、他には特に気になるところはないです。・・・とおもったら、C(;,;,n)=Aのところは
C(:,:,n) = A; % セミコロンではなくてコロン
です。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

madhan ravi
madhan ravi 2020년 7월 22일
편집: madhan ravi 2020년 7월 22일
I = num2cell(Images);
W = cat(3, I{:});
  댓글 수: 2
shunya hara
shunya hara 2020년 7월 22일
numcell(Image)
とあるのですがimageはどのように1000枚の画像を入れればいいですか?
今は以下のように画像を読み込んでいます
a=dir('filename')
for n=4:1079;
A=imread(a(n).name);
b=cat(3,b,A)
end
madhan ravi
madhan ravi 2020년 7월 22일
n = 4 : 1079;
A = cell(numel(n), 1);
for n = n
A{k} = imread(a(n).name);
k = k + 1;
end
W = cat(3, A{:});

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 イメージ에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!