当前位置: 首页 > news >正文

MATLAB读取图片并转换为二进制数据格式

文章目录

  • 前言
  • 一、MATLAB 文件读取方法
    • 1、文本文件读取
    • 2、二进制文件读取
    • 3、 图像文件读取
    • 4、其他文件读取
  • 二、常用的图像处理标准图片链接
  • 三、MATLAB读取图片并转换为二进制数据格式
    • 1、matlab 源码
    • 2、运行结果


前言

本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方法,避免后面再做无用功。


一、MATLAB 文件读取方法

1、文本文件读取

Matlab 可以使用 textread 函数、fgetl 函数和 dlmread 函数来读取文本文件。

  • textread 函数用于读取包含数字和文本值的纯文本文件,例如 .csv 文件。该函数将逐行读取文件,返回矩阵或多个矩阵,并允许您指定分隔符和每种数据类型的格式。
  • fgetl 函数逐行读取纯文本文件,并返回一个字符向量或空字符串。该函数不需要指定分隔符或格式。
  • dlmread 函数读取包含数字的表格,其中数据以指定的分隔符分隔。该函数返回矩阵。

2、二进制文件读取

Matlab 可以使用 fread 函数来读取二进制文件。fread 函数返回一个矩阵,其中每个元素都是二进制文件中的一个值。您可以指定要读取的数据类型、数据格式、读取的起始位置和要读取的数据量。

3、 图像文件读取

Matlab 可以使用 imread 函数来读取图像文件,例如 .jpg 文件。imread 函数可以返回包含像素值的矩阵和一些元数据的结构体。

4、其他文件读取

Matlab 可以使用 load 函数来读取 MATLAB 文件,并返回在文件中存储的所有变量。还可以使用 xlsread 函数来读取 Microsoft Excel 文件。这些函数还可以指定要读取的变量或工作表的名称。

二、常用的图像处理标准图片链接

常用的图像处理标准图片(Lena、cameraman等)获取地址:常用的图像处理标准图片

三、MATLAB读取图片并转换为二进制数据格式

  • 主要流程:为将本地文件转换成二进制数据形式保存成为 txt 格式文件,接着从 txt 文件中读取并显示
  • 验证标准:转换前后显示的图片一致

1、matlab 源码

源码如下:

clear all
close all% 读取图像
imdata = imread('Lena.bmp');% 显示图像
imshow(imdata);% 将图像转换为二进制格式
BinSer = dec2bin(imdata, 8); % 将 BinSer 进行转置,使得每列表示一个像素值的二进制字符串。
BinSer = BinSer';% 根据图像的大小创建一个文件名,文件名的格式为'binaryImg_M_N_K.txt',
% 其中M表示图像的行数,N表示图像的列数,K表示图像的通道数(对于灰度图像,
% 通道数为1)。
FileName = [num2str(size(imdata,1)), '_',num2str(size(imdata,2)),'_',num2str(size(imdata,3)),'.txt'];% 打开文件 FileName,以写入(write)方式
fid = fopen(FileName,'w');% 将 BinSer 中的数据按照字符形式写入到文件中。
fprintf(fid,'%c', BinSer(:));% 关闭文件
fclose(fid);% 创建一个新的图像显示窗口
figure;% 从文件名中读取出图像的行数 M、列数 N 和通道数 K,并将它们存储在变量 mn 中
mn = sscanf(FileName, '%d_%d_%d');
M = mn(1); N = mn(2); K = mn(3);% 以只读(read)方式打开文件 FileName。
fid = fopen(FileName, 'r');% 从文件中读取数据,并将其存储在变量 data 中
data = fscanf(fid, '%c');% 关闭文件
fclose(fid);% 将 data 重新排列成每列 8 个字符的矩阵,表示每个像素值的二进制字符串
data1 = reshape(data, 8, length(data)/8);% 将data1中的二进制字符串转换为对应的十进制表示,并将结果重新排列为
% M×N×K 的三维矩阵,其中 M 为行数,N 为列数,K 为通道数。
data2 = reshape(bin2dec(data1'), M, N, K);% 显示转换后的图像数据
imshow(uint8(data2));

2、运行结果

左图为原图片,右图为转换成二进制文件后再进行显示
在这里插入图片描述
可以看到结果一致,达到了预期的期望。


我的qq:2442391036,欢迎交流!


http://www.lryc.cn/news/279523.html

相关文章:

  • 时序数据库
  • 【第一次使用finalshell连接虚拟机内的centos】小白处理方式
  • Pinia 踩坑记录
  • 在ASP.NET MVC中使用JQuery提供的弹出窗口(模态窗口)
  • 基本工具配置
  • 计算机网络——应用层(3)
  • 配置ssh实现互相免密登陆
  • 【UEFI基础】EDK网络框架(ARP)
  • Linux进阶课:目录(文件夹)与文件操作
  • Flink自定义Source模拟数据流
  • [易语言]使用易语言部署工业级人脸检测模型
  • 2024年海外推广怎么做?
  • Redis分布式锁--java实现
  • 好消息,Linux Kernel 6.7正式发布!
  • 【k8s】Kubernetes 声明式 API、命令式
  • 解锁营销新高度:幽灵鲨CRM推广平台线索对接功能详解
  • uniapp 创建组件
  • Linux--部署 Tomcat 及其负载均衡
  • 影像组学介绍
  • 什么是云服务器?云服务器的工作原理是介绍
  • 【前后端的那些事】前后端环境搭建+树形结构表格实现
  • PHP版学校教务管理系统源码带文字安装教程
  • 前端背景收集之烟花背景
  • PCL 格网法计算点云的占地面积
  • 《设计模式的艺术》笔记 - 面向对象设计原则
  • 《Linux C编程实战》笔记:线程同步
  • leetcode141.环形链表
  • 景联文科技:以高质量数据赋能文生图大模型
  • [论文笔记] PAI-Megatron中qwen和mistral合并到Megtron-LM
  • python设计模式有哪几种