我正在生成一个灰度图案,要加载到我的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')
答案 0 :(得分:2)
imshow
与输入图像动态上的imwrite
没有相同的假设。更准确地说,来自imwrite
:
如果A是数据类型为double或single的灰度或RGB彩色图像,则 imwrite假定动态范围为[0,1] ,并在将数据写入之前自动将数据缩放255该文件为8位值
因此,请将数据存储在uint8数组中,或者在写入文件之前将像素值除以255。