无法保存和加载mat文件

时间:2012-11-27 12:32:33

标签: matlab octave

我正在尝试将大量图像组合到.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文件。我怎么做?

1 个答案:

答案 0 :(得分:1)

答案在上面的评论中。 ypnos指出数据是16 bpp,而不是我假设的8 bpp。