Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Matlab创建灰度掩模,并将其写入灰度图像。_Matlab_Image Processing_Matlab Figure - Fatal编程技术网

使用Matlab创建灰度掩模,并将其写入灰度图像。

使用Matlab创建灰度掩模,并将其写入灰度图像。,matlab,image-processing,matlab-figure,Matlab,Image Processing,Matlab Figure,我正在制作一个灰度模式,加载到我的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)=randp

我正在制作一个灰度模式,加载到我的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是双精度或单精度数据类型的灰度或RGB彩色图像,则imwrite假设动态范围为[0,1],并在将数据作为8位值写入文件之前自动将其缩放255


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

imshow
与输入图像上的
imwrite
的假设不同。更准确地说,从
imwrite
的文档中:

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


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

灰度值应为0到255。您的
randperm
接受向量的排列
[1:256]
。说到这里,你为什么用
randperm
而不是
randi
。我怀疑从长远来看,
randperm
的速度会慢一些,当然也不那么直观。灰度值应该是0到255。您的
randperm
接受向量的排列
[1:256]
。说到这里,你为什么用
randperm
而不是
randi
。我怀疑从长远来看,
randperm
的速度会慢一些,而且它肯定不那么直观。