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

1 回表示 (過去 30 日間)
takmakome
takmakome 2022 年 6 月 26 日
コメント済み: takmakome 2022 年 6 月 26 日
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にしたらこのようなエラーが出てしまいました。 わかりにくいと思いますがお願いします。

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 6 月 26 日
>なぜこのエラーが出るのか (中略) 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 件のコメント
takmakome
takmakome 2022 年 6 月 26 日
2つも解決方法を提案してくださりありがとうございます。
めちゃめちゃ勉強になります。

サインインしてコメントする。

その他の回答 (1 件)

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

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!