大量の画像セットを .mat ファイルに結合しようとしています。画像は 512x512、グレースケールです。そのような画像が 31 あります。
matfile を作成して保存するために、次のことを行いました。
fid1 = fopen('C:\Users\...\MATLAB\fileList_IMG.txt','r');
PATH_IMG = 'C:\Users\...\IMAGES\';
PATH_MAT = 'C:\Users\...\IMAGES\MATfiles\';
IMG_DATA = zeros(512, 512, 31);
while ~feof(fid1)
folderName = fgetl(fid1);
for i=1:31
fileName = sprintf('%s%s\\%s\\%s_%02d.png',PATH_IMG, folderName, folderName, folderName, i);
tempImg = imread(fileName);
IMG_DATA(:,:,i) = tempImg(:,:,1);
end
save_fileName = sprintf('%s%s', PATH_MAT, folderName);
save(save_fileName, 'IMG_DATA');
end
matfile をロードするために次のことを行いました。
fileName = 'C:\Users\...\IMAGES\MATfiles\balloon.mat';
NEWIMG_DATA = load(fileName);
読みやすくするために、これが new_IMG_DATA であるとしましょう。
価値観が違うことに気づきました!IMG_DATA の 170 と 172 の値が new_IMG_DATA の 3709 と 3666 に対応するため、値が拡大されたわけではありません。IMG_DATA と new_IMG_DATA はどちらも double データ型です。.mat ファイルを作成する前に IMG_DATA を強制的に uint8 にすると、new_IMG_DATA の値のほとんどが 255 になります。
以下は、matfile として保存する前の IMG_DATA のサンプルです: IMG_DATA(400,400,4:10)
アンズ (:,:,1) = 133
アンズ (:,:,2) = 141
アンズ (:,:,3) = 142
アンズ (:,:,4) = 145
アンズ (:,:,5) = 156
アンズ (:,:,6) = 157
アンズ (:,:,7) = 158
以下は、ロードバック後の new_IMG_DATA のサンプルです: NEWIMG_DATA.IMG_DATA(400,400,4:10)
ans(:,:,1) = 16366
ans(:,:,2) = 18216
ans(:,:,3) = 19648
アンズ (:,:,4) = 19578
ans(:,:,5) = 19203
ans(:,:,6) = 18682
ans(:,:,7) = 17123
.mat ファイルを適切に保存およびロードできるようにしたい。どうすればいいですか?