2015-10-14 68 views
0

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

00000000000000000000000000000000 00000000000000000000000000000000 
00000000000000000000000000000000 00000000000000000000000000000000 

这是我在.txt文件中的输入数据存储。我的预期输出是一个2x2分辨率的黑色图像。在MATLAB中有没有特定的命令来做到这一点?

+4

你试过....阅读.... ....该文件? –

+0

尝试使用'load'? – rayryeng

+0

我不认为有一个特定的命令来做到这一点,你可能需要通过'fopen'打开文件,通过'fscanf'或'fgetl'或类似的东西读取它,然后通过'fclose'关闭它。我建议阅读一些关于我提到的功能的文档。 – Wauzl

回答

6

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

  1. 打开文件
  2. 确定矩阵的列数
  3. 读取所有二进制数为文本字符串
  4. 紧密的单元阵列文件
  5. 确定矩阵的行数
  6. 将二进制字符串转换为十进制并标准化
  7. 重塑基质所需的列和行数

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

+2

非常好的答案!上编 – GameOfThrows