在matlab中读取时保存的图像不同

时间:2014-03-10 08:30:08

标签: image matlab processing

我使用一些计算创建了一个矩阵。我将它保存为 BMP 格式。但是当我在MATLAB中读回它时,它的内容完全改变。只有值 0 是正确的。所有其他像素的值都 255 enter image description here 。为什么这样。如何解决? 使用 imsec 命令时,它正确显示图像

 for i=1:length(pixel_matrix)
     pixel=char(pixel_matrix(i));
     r=7;

     pixel_value=0;
     for j=1:4
         s=r-1;
         if(pixel(j)=='A')
             temp_bin=0;
         elseif(pixel(j)=='B')
             temp_bin=(2^r)+(2^s);
         elseif(pixel(j)=='C')
             temp_bin=(2^s);
         elseif(pixel(j)=='D')
             temp_bin=(2^r);
         end

     pixel_value=pixel_value+temp_bin;
     r=r-2;


     end
     pixel_row(i)=pixel_value;
 end


 i=1;
 j=1;
 for m=1:length(pixel_row)

     pixel_value(i,j)=pixel_row(m);
     j=j+1;
     if(j==65)
         i=i+1;
         j=1;
     end
     end

     for i=1:64
         for j=1:64
             picture(i,j)=uint8(pixel_value(i,j));
         end
 end

 imwrite(picture,'C:\Users\XXX\Desktop\pic.bmp');

 aaaa=imread('C:\Users\XXX\Desktop\pic.bmp');

1 个答案:

答案 0 :(得分:0)

问题很可能是你用picture填充uint8值,但是当没有另外指定时,MatLab中的图像在0和1之间加倍。尝试使用Map选项对于imwritepixel_value(i,j)的值,使它们在0和1之间拟合,如下所示:

%...
 for i=1:64
     for j=1:64
         picture(i,j)=pixel_value(i,j)/255; %<- Norm things here...
     end
 end