我使用一些计算创建了一个矩阵。我将它保存为 BMP 格式。但是当我在MATLAB中读回它时,它的内容完全改变。只有值 0 是正确的。所有其他像素的值都 255 。为什么这样。如何解决? 使用 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');
答案 0 :(得分:0)
问题很可能是你用picture
填充uint8
值,但是当没有另外指定时,MatLab中的图像在0和1之间加倍。尝试使用Map
选项对于imwrite
或pixel_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