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

tee*_*enu 0 matlab image-processing

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

00000000000000000000000000000000 00000000000000000000000000000000
00000000000000000000000000000000 00000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

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

m.s*_*.s. 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)';
Run Code Online (Sandbox Code Playgroud)

示例使用:

data.dat文件

00000000000000000000000000000000 00000000000000000000000000000000 10000000000000000000000000000000
00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
10000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
im = load_image('data.dat');
imshow(im);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 非常好的答案!上编 (2认同)