我正在尝试将大量图像组合到.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)
ans(:,:,1)= 133
ans(:,:,2)= 141
ans(:,:,3)= 142
ans(:,:,4)= 145
ans(:,:,5)= 156
ans(:,:,6)= 157
ans(:,:,7)= 158
以下是加载后的new_IMG_DATA示例: NEWIMG_DATA.IMG_DATA(400,400,4:10)
ans(:,:,1)= 16366
ans(:,:,2)= 18216
ans(:,:,3)= 19648
ans(:,:,4)= 19578
ans(:,:,5)= 19203
ans(:,:,6)= 18682
ans(:,:,7)= 17123
我希望能够正确保存和加载.mat文件。我怎么做?
答案 0 :(得分:1)
答案在上面的评论中。 ypnos指出数据是16 bpp,而不是我假设的8 bpp。