我正在尝试将大量图像组合成一个 .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 都是双精度数据类型。如果我在创建 .mat 文件之前将 IMG_DATA 强制为 uint8,则 new_IMG_DATA 的大多数值都是 255。
以下是 IMG_DATA 保存为 matfile 之前的一些示例: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)
答案(:,:,1)= 16366
答案(:,:,2)= 18216
答案(:,:,3)= 19648
答案(:,:,4)= 19578
答案(:,:,5)= 19203
答案(:,:,6)= 18682
答案(:,:,7)= 17123
我希望能够正确保存和加载 .mat 文件。我该怎么做?