如何使用matlab将256灰度位图图像保存为24位灰度图像?

时间:2018-01-04 09:15:43

标签: image matlab image-processing graphics

我有一个256 graylevel位图图像,我在matlab中创建。我想用matlab将它保存到24位灰度图像中? 这是我在mtlab中编写的代码。将灰度图像保存为bmp 程序创建随机相位maks行像素列10列并写入     %文件到计算机。     %返回1D中的输入向量Ein。

clear all
    close all
    for m=1:25

    mask1=zeros(1140,912);

    line=randi(255,1140,1);

    Ein(:,:,m)=line;



    % line=randi(255,540,1);
    % temp_line=line;
    % % save('line')
    % mask=zeros(1080,1)
    % i=1;
    % 
    % for k=1:length(line)
    % for i=i:i+1
    %     
    %     mask(i)=line(k);
    %     
    % end
    % i=i+1;
    % end
    % line=mask;




            mask1(:,456)=line(:,:);
    %          mask(1:1080,956)=line;
    %           mask(1:1080,957)=line;
    %            mask(1:1080,958)=line;
    %             mask(1:1080,959)=line;
    %              mask(1:1080,960)=line;
    %               mask(1:1080,961)=line;
    %                mask(1:1080,962)=line;
    %                 mask(1:1080,963)=line;
    %                  mask(1:1080,964)=line;

    %                  imwrite(unit8(mask),'Dec_21_mask_1.bmp')
    imwrite(uint8(mask1),sprintf('DMDmask_%d.bmp',m))
    %                  imwrite(uint8(mask1),'new_mask4.bmp')
    %                  f=imread('DMDmask_1.bmp');
    %                  figure
    %                  imshow(f)


    %         figure
    %  
    % imshow((mask),[])
    % Ein_angle=Fit_GrayLevel_To_Ein_Vector(mask);
    % Ein_angle=Fit_GrayLevel_To_Ein_Vector(line);
    % 
    % figure
    % 
    % imshow(Ein_angle)

    % Ein(m,:,:)=exp(1i*Ein_angle(:,:));
    % figure
    % imshow(angle(Ein));






    end
    save('Ein')
    % mask=angle(mask);
    % 
    % SLM_mask=Fit_GrayLevel_To_SLM_Vector(mask);
    % figure
    % imshow(SLM_mask)

1 个答案:

答案 0 :(得分:0)

我认为您希望将图像保存为24位RGB图像,而不是24位灰度图像,因为这些图像完全没有标准,而且在我漫长的职业生涯中从未见过。

要将其转换为24位RGB图像,您可以这样做:

rgb_image = repmat(mask1,[1,1,3]);
imwrite(uint8(rgb_image),sprintf('DMDmask_%d.bmp',m))