使用Matlab创建灰度级掩码,并编写与灰度级图像相同的掩码



我正在生成一个要加载到SLM(空间光调制器)上的灰度模式。图案为1920x1080像素。我有255个灰度值。我试用了这个代码来创建一个灰度级遮罩。当我在Matlab中打开时,我可以看到它是灰度级的,但当我把图像写为bmp文件时,它就变成了二进制文件。我该如何解决这个问题。以下是我的代码。

clear all
close all
mask=zeros(1080,1920);
% imshow(mask,[])
for k=1:500
for i=1:1080
mask(i,k)=randperm(256,1);
end
end

% mask3=Fit_GrayLevel_To_SLM_Vector(mask);
imshow(mask,[])
imwrite(mask,'mymask4.bmp')

imshow在输入图像动态上没有做出与imwrite相同的假设。更确切地说,来自imwrite:的文档

如果A是数据类型为double或single的灰度或RGB彩色图像,则imwrite假设动态范围为[0,1],并在将数据作为8位值写入文件之前将其自动缩放255

因此,在写入文件之前,将数据存储在uint8数组中,或者将像素值除以255。

最新更新