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

news2024/11/16 2:56:37

文章目录

  • 前言
  • 一、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.coloradmin.cn/o/1376878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

130基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原

基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原 ,输出复原前后图像,PSF频谱结果。程序已调通,可直接运行。 130 matlab盲迭代反卷积IBD (xiaohongshu.com)

高手总结17个画好原理图的技巧

欧若奇科技 专业电路设计,PCB复制,原理图反推,电子产品优化设计等 不光是代码有可读性的说法,原理图也有。很多时候原理图不仅仅是给自己看的,也会给其它人看,如果可读性差,会带来一系列沟通问…

【TypeScript】入门基础知识

目前在做项目的技术栈是 reacttypescript,之前只知道 ts 是 js 的扩展,增加了类型检查,但是没有仔细的学过,纯纯看别人代码上手 anyscript(这很难评...)。趁着最近空闲,就学习一下 ts 的基础知识…

鸿蒙原生应用/元服务开发-长时任务

概述 功能介绍 应用退至后台后,对于在后台需要长时间运行用户可感知的任务,例如播放音乐、导航等。为防止应用进程被挂起,导致对应功能异常,可以申请长时任务,使应用在后台长时间运行。申请长时任务后,系统…

电脑弹窗“concrt140.dll文件找不到”,快速修复,亲测有效

很多小伙伴,在启动游戏或软件的时候,电脑会弹出错误提示框称““concrt140.dll文件找不到,程序无法运行”,不清楚是怎么回事,应该怎么办? 首先,我们先来了解““concrt140.dll文件找”是什么&a…

【AI视野·今日Robot 机器人论文速览 第七十四期】Wed, 10 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 10 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Hold em and Fold em: Towards Human-scale, Feedback-Controlled Soft Origami Robots Authors Immanuel Ampomah Mensah, Je…

【前后端的那些事】前后端环境搭建+树形结构表格实现

文章目录 1. 前后端项目环境搭建2. table-tree2.1 后端准备2.2 前端准备 前言:最近写项目,发现了一些很有意思的功能,想写文章,录视频把这些内容记录下。但这些功能太零碎,如果为每个功能都单独搭建一个项目&#xff0…

【贪心】一手顺子

/** 贪心:将一个数当成一个组中最小的数,在根据该最小数找其它数。* 思路:将hand进行分组,假设hand长度为 n,必须n % groupSize 0才可以分组,否则返回false,* 使用哈希表记录每个数出现…

考研经验总结——目录

文章目录 一、写作顺序二、个人情况说明三、读评论四、一些小牢骚 一、写作顺序 我将准备从三个阶段开始介绍吧 考研前考研中考研后(也就是现在我的这种情况) 考研前我会分为:数学、专业课、政治、英语 四个部分来写 我应该会涉及&#xf…

AI赋能建筑设计 | VERYCLOUD睿鸿股份与亚马逊云科技协力为AIRI lab. 打造生成式AI应用案例

近年来,很多研究都致力于探索如何让建筑师借助人工智能的力量来促进并简化设计流程。生成式AI全球爆火以来,建筑设计领域也掀起了一场全新的思维变革。 AI为建筑设计带来更多可能 作为一家面向全球提供设计服务的企业,AIRI lab.计划推出一种…

Python教程41:使用turtle画蜡笔小新

---------------turtle源码集合--------------- Python教程39:使用turtle画美国队长盾牌 Python教程38:使用turtle画动态粒子爱心文字爱心 Python教程37:使用turtle画一个戴帽子的皮卡丘 Python教程36:海龟画图turtle写春联 …

【pytorch】使用pytorch构建线性回归模型-了解计算图和自动梯度

使用pytorch构建线性回归模型 线性方程的一般形式 衡量线性损失的一般形式-均方误差 pytorch中计算图的作用和优势 在 PyTorch 中,计算图(Computational Graph)是一种用于表示神经网络运算的数据结构。每个节点代表一个操作,例如…

【AWS】使用亚马逊云服务器创建EC2实例

目录 前言为什么选择 Amazon EC2 云服务器搭建 Amazon EC2 云服务器注册亚马逊账号登录控制台服务器配置免费套餐预览使用 Amazon EC2 云服务器打开服务器管理界面设置服务器区域填写实例名称选择服务器系统镜像选择实例类型创建密钥对网络设置配置存储启动实例查看实例 总结 前…

【天龙怀旧服】攻略day5

关键字: 天鉴扫荡、举贤、燕子水路 1】85天鉴任务可以扫荡 在流派选择npc那里,花费40交子即可扫荡100点,可以兑换10个灵武打造图; 此外打造图绑定不影响做出来的灵武绑定,只要对应的玉不绑灵武就不绑定 2】冠绝师门…

C#使用CryptoStream类加密和解密字符串

目录 一、CrytoStream的加密方法 二、CrytoStream的解密方法 三、实例 1.源码Form1.cs 2.类库Encrypt.cs 3.生成效果 在使用CryptoStream前要先引用命名空间using System.Security.Cryptography。 一、CrytoStream的加密方法 记住,不能再使用DESCryptoServi…

宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新

来源:宏集科技 工业物联网 宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新 原文链接:https://mp.weixin.qq.com/s/DwzVzifUiidNr-FT3Zfzpg 欢迎关注虹科,为您提供最新资讯! 01 前言 近年来,中国食品行业…

深入浅出Android dmabuf_dump工具

目录 dmabuf是什么? dmabuf_dump工具介绍(基于Android 14) Android.bp dmabuf_dump.cpp 整体架构结构如下 dmabuf_dump主要包含以下功能 前置背景知识 fdinfo 思考 bufinfo Dump整个手机系统的dmabuf Dump某个进程的dmabuf​​​​​​​ 以Table[buff…

Hive 的 安装与使用

目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive5 Hive 常用交互命令6 Hive 常见属性配置 Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与其他客户…

Windows 远程控制之 PsExec

1、介绍: PsExec 是一种轻量级 telnet 替代品,可让你在其他系统上执行进程,并为控制台应用程序提供完整交互性,而无需手动安装客户端软件。 PsExec 最强大的用途包括在远程系统上启动交互式命令提示符,以及 IpConfig …

一篇文章彻底搞懂TiDB集群各种容量计算方式

背景 TiDB 集群的监控面板里面有两个非常重要、且非常常用的指标,相信用了 TiDB 的都见过: Storage capacity:集群的总容量 Current storage size:集群当前已经使用的空间大小 当你准备了一堆服务器,经过各种思考设计…