エラー:reshapeはなぜ発生するのですか?

4 views (last 30 days)
takmakome
takmakome on 26 Jun 2022
Commented: takmakome on 26 Jun 2022
imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
whos imds
T = imshow(readimage(imds,1))
whos T
D = zeros(128,128,1,41011);
for i = 1:numel(imds.Files)
II = imread (imds.Files{i});
I = reshape(II,128,128);
D(:,:,:,i) = I;
end
なぜこのエラーが出るのかが初心者でわからないので改善できるアイデアをご教授してくださると助かります。
写真は128×128 IIが10×12でサイズを合わせるためにresizeで128×128にしたらこのようなエラーが出てしまいました。 わかりにくいと思いますがお願いします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 26 Jun 2022
>なぜこのエラーが出るのか (中略) IIが10×12でサイズを合わせるためにresizeで128×128に
エラーメッセージの通り、reshape関数で入力データの要素数を変更してはなりません。10*12=120画素を128*128=16384画素に変更しようとしていますがそれは出来ません。今の目的に適する関数はimresize関数です。
imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
whos imds
T = imshow(readimage(imds,1))
whos T
D = zeros(128,128,1,41011);
for i = 1:numel(imds.Files)
II = imread (imds.Files{i});
I = imresize(II,[128,128]); % reshape(II,128,128);
D(:,:,:,i) = I;
end
  1 Comment
takmakome
takmakome on 26 Jun 2022
2つも解決方法を提案してくださりありがとうございます。
めちゃめちゃ勉強になります。

Sign in to comment.

More Answers (1)

Atsushi Ueno
Atsushi Ueno on 26 Jun 2022
% Deep Learning に入力するため画像をリサイズする場合、画像ファイルそのものには手を加えることなく、
% プログラム側で imageDatastore + augmentedImageDatastore を組み合わせて使うことで、
% Deep Learning への画像入力サイズを調整することができます。
imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
augimds = augmentedImageDatastore([128 128 1],imds);
Deep Learning に入力するため画像をリサイズするのであれば、上記のimdsではなくaugimdsを用いれば、画像をリサイズしなくても自動的に変換する仕組み(ミニバッチ)を動かしてくれます。

Community Treasure Hunt

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

Start Hunting!