如何在MATLAB中将像素矩阵文本文件转换为图像?

时间:2015-10-14 08:44:48

标签: matlab image-processing

我在文本文件中有32位像素的矩阵。我想将此数据转换为实际图像。

00000000000000000000000000000000 00000000000000000000000000000000
00000000000000000000000000000000 00000000000000000000000000000000

这是我在.txt文件中的输入数据存储。我的预期输出是2x2分辨率的黑色图像。在MATLAB中是否有任何特定的命令来执行此操作?

1 个答案:

答案 0 :(得分:6)

以下示例代码执行以下步骤:

  1. 打开文件
  2. 确定矩阵的列数
  3. 将所有二进制数字读取为文本字符串的单元格数组
  4. 关闭文件
  5. 确定矩阵的行数
  6. 将二进制字符串转换为十进制并规范化
  7. 将矩阵重新整形为所需的列数和行数
  8. function [im, width, height] = load_image(filename)
    
    fid = fopen(filename,'r');
    
    first_line = fgetl(fid);
    width = (length(first_line)+1)/33;
    frewind(fid);
    
    data = textscan(fid, '%s');
    
    fclose(fid);
    
    height = size(data{1},1) / width;
    
    im = bin2dec(data{:})/2^32;
    
    im = reshape(im, width, height)';
    

    示例使用:

    data.dat文件

    00000000000000000000000000000000 00000000000000000000000000000000 10000000000000000000000000000000
    00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
    10000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
    
    im = load_image('data.dat');
    imshow(im);
    

    enter image description here