.mat格式文件是什么?及将png,jpg,bmp,gif,tiff,psd等格式图片转为.mat格式(附代码)

很多深度学习网络的输入要求为.mat格式,当然也可以直接修改输入数据的代码,比如修改为使用OpenCV读取图片等,但有些网络修改起来比较麻烦,且.mat数据有很多优势,所以部分网络最好还是用默认的.mat格式数据

目录

  • 一、.mat格式文件
    • 1.1 .mat格式文件是什么
    • 1.2 为什么有的深度学习网络要求是.mat个数数据
      • 1.2.1 数据组织
      • 1.2.2 数据预处理
      • 1.2.3 兼容性
      • 1.2.4 数据共享
  • 二、常见的图片格式
    • 2.1 .jpeg
    • 2.2 .png
    • 2.3 .gif
    • 2.4 .psd
    • 2.5 .tiff
    • 2.6 .bmp
    • 2.7 .pcx
    • 2.8 .tga
    • 2.8 .exif
    • 2.10 .fpx
    • 2.11 .svg
    • 2.12 .CR3
  • 三、 转.mat格式代码
    • 3.1 修改参数
    • 3.2 代码
    • 3.3 转换结果
    • 3.4 .mat文件中的数据
  • 四、总结

一、.mat格式文件

1.1 .mat格式文件是什么

.mat 文件是 MATLAB 的数据存储的标准格式。这种文件是标准的二进制文件,也可以以 ASCII 码的形式保存和加载。.mat 文件的方便之处在于,它可以连同数据的变量名一同保存下来,并且不需要控制数据的存储格式,MATLAB 会自动保存并区分我们所存储的内容。

例如,想在MATLAB 中方便地保存和加载数据,你可以使用 save 命令来生成 .mat 文件。下面是一个具体的例子:

% 创建一个3行3列的矩阵A并保存为.mat文件
A = magic(3);
save("Test.mat","A")

如果你想打开 .mat 文件,可以使用 load 命令。例如:

% 直接导入数据:两种方法
load("Test.mat")
load Test.mat

1.2 为什么有的深度学习网络要求是.mat个数数据

.mat 文件提供了一种方便、高效的方式来存储和共享用于深度学习的数据。

深度学习网络可能会要求使用 .mat 文件格式的数据,主要有以下几个原因:

1.2.1 数据组织

.mat 文件是 MATLAB 的数据存储的标准格式,可以存储多种类型的数据,包括矩阵、图像、音频、文本等。这种格式的文件可以将多个相关的数据集组织在一起,方便进行批量处理和分析。

1.2.2 数据预处理

在深度学习中,数据预处理是一个重要的步骤。.mat 文件可以存储预处理后的数据,例如归一化、标准化、特征提取等处理后的数据。这样,深度学习网络可以直接使用预处理后的数据,无需再进行这些处理步骤。

1.2.3 兼容性

许多深度学习工具和库,如 TensorFlow、Keras、PyTorch 等,都可以读取 .mat 文件中的数据。这意味着,无论你使用哪种深度学习工具或库,都可以方便地使用 .mat 文件中的数据。

1.2.4 数据共享

.mat 文件是一种通用的数据格式,可以在不同的平台和工具之间进行共享。这意味着,如果你的深度学习网络需要使用别人的数据,或者你想分享你的数据给别人,.mat 文件是一个很好的选择。

二、常见的图片格式

2.1 .jpeg

  • JPEG:也叫做 JPG 或 JPE 格式,是最常用的一种文件格式,特别适合应用于互联网,可以将图像压缩在很小的储存空间。

2.2 .png

  • PNG:PNG 图片支持透明背景,适合制作透明背景的图片,如 logo 等。

2.3 .gif

  • GIF:GIF 格式的最大特点是支持动态图片,并且支持透明背景。网络上绝大部分动图、表情包都是 GIF 格式的。

2.4 .psd

  • PSD:PSD 格式是 Photoshop 默认的存储格式,适用于存储源文档和工作文件,修改起来比较方便。

2.5 .tiff

  • TIFF:TIFF 格式,也叫做或 TIF 格式,可以支持不同颜色模式、路径、透明度、以及通道,是打印文档中最常用的格式。

2.6 .bmp

  • BMP:BMP 格式是 Windows 操作系统中的标准图像文件格式,能够被多种 Windows 应用程序所支持。

    .bmp格式图像通常比其他格式图像更大,因为它不采用任何压缩。

    由于.bmp格式图像不进行压缩,因此它能保持图像的原始质量。然而,.jpg等格式由于使用了有 损压缩,可能会导致图像质量下降。

    .bmp格式图像是一种位图图像,它记录了图像中每一个像素的颜色信息。

2.7 .pcx

  • PCX:PCX是一种光栅图像文件格式,用作PC画笔应用程序的本机文件格式。PCX文件的大小更小,因为它们是使用RLE编码压缩的。

2.8 .tga

  • TGA:TGA是一种图像文件格式,由美国Truevision公司为其显示卡开发。TGA文件支持256色调色板或全24位的RGB,图像大小最多达64K*64K像素。

2.8 .exif

  • EXIF:EXIF是一种图像文件格式,实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据、缩略图等。

2.10 .fpx

  • FPX:FPX是一个拥有多重解像度的图像格式,即图像被储存成一系列高低不同的解像度,而这种格式的好处是当图像被放大时仍可保持图像的质量。

2.11 .svg

  • SVG:SVG格式文件是可缩放矢量图形文件的缩写,是一种用于在互联网上渲染二维图像的标准图形文件类型。与其他流行的图像文件格式不同,SVG格式文件将图像存储为矢量,这是一种基于数学公式的图形,由点、线、曲线和形状组成。

2.12 .CR3

  • CR3:.CR3 文件是佳能相机拍摄的原始图像的文件格式。这是佳能最新的原始格式,它在2018年后推出的大多数专业装备都支持这种格式。CR3格式对专业照片编辑最有用,使他们能够获得未经处理的图像。然后,他们可以使用这些原始信息,随心所欲地对照片进行造型或其他处理。目前只有佳能EOS M50、EOS R、EOS RP这三款相机的记录格式是CR3。

三、 转.mat格式代码

3.1 修改参数

代码具体使用,学者只需要对应修改下面三个地方即可,我给的例子中是将.png格式图片转为.mat格式,如果要转换其它格式的图片,只需要将input_type修改为jpg或者bmp等即可:

在这里插入图片描述

3.2 代码

# 转换单个文件夹中的所有图片为mat格式
import sys
import cv2
import os
import numpy as np
from scipy.io import savemat
import timedef findFiles(root_dir, filter_type, reverse=False):print("Finding files ends with \'" + filter_type + "\' ...")separator = os.path.seppaths = []names = []files = []for parent, dirname, filenames in os.walk(root_dir):for filename in filenames:if filename.endswith(filter_type):paths.append(parent + separator)names.append(filename)for i in range(paths.__len__()):files.append(paths[i] + names[i])print(names.__len__().__str__() + " files have been found.")paths.sort()names.sort()files.sort()if reverse:paths.reverse()names.reverse()files.reverse()return paths, names, filesdef cvtImgs2MatAndSave(img_dir, file_type, img_key_name, out_path):paths, names, files = findFiles(img_dir, file_type)imgs = []for i in range(len(files)):tmp_img = cv2.imread(files[i])imgs.append(tmp_img)img_width = imgs[0].shape[1]img_height = imgs[0].shape[0]num_channel = imgs[0].shape[2]num_imgs = len(imgs)print("Target shape:[", num_imgs, img_height, img_width, num_channel, "]")img_mat = np.zeros([num_imgs, img_height, img_width, num_channel], np.uint8)for i in range(len(imgs)):img_mat[i, :, :, :] = imgs[i]img_dict = {img_key_name: img_mat,'__header__': 'Matlab MAT-file, Created by Xuhui Zhao on ' + time.ctime(),'__version__': '1.0','__globals__': ''}savemat(out_path, img_dict)return img_dictif __name__ == '__main__':input_img_dir = "TestImages/SIDD/Visible_Images"  # input影像块所在文件夹input_type = "png"  # input影像块文件类型out_dir = "TestImages/SIDD/mat"  # mat文件输出文件夹# 文件默认名如下(与SIDD一致)out_input_mat_name = out_dir + "/BenchmarkNoisyBlocksSrgb.mat"# 如果设置的文件名没有后缀名,再加上if not (out_input_mat_name.__contains__(".mat") or out_input_mat_name.__contains__(".MAT")):out_input_mat_name = out_input_mat_name + ".mat"# mat文件的key name(与SIDD一致)input_key_name = "BenchmarkNoisyBlocksSrgb"# 将多个影像文件转换成Mat文件 validation-inputcvtImgs2MatAndSave(input_img_dir, input_type, input_key_name, out_input_mat_name)

3.3 转换结果

在这里插入图片描述

3.4 .mat文件中的数据

.mat文件中的数据如下

在这里插入图片描述

四、总结

以上讲述了什么是.mat格式文件,以及为什么深度学习网络训练使用.mat格式数据的原因,还科普了一些常见的图片格式,并附上了将png,jpg,bmp,gif,tiff,psd等格式图片转为.mat格式的详细代码。

希望能帮到你,总结不易,多多支持,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/204760.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gossip协议理解

概述 Gossip协议,又称epidemic协议,基于流行病传播方式的节点或进程之间信息交换的协议,在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中…

OpenStack云计算平台

目录 一、OpenStack 1、简介 2、硬件需求 3、网络 二、环境搭建 1、安全 2、主机网络 3、网络时间协议(NTP) 4、OpenStack包 5、SQL数据库 6、消息队列 7、Memcached 一、OpenStack 1、简介 官网:https://docs.openstack.org/2023.2/ OpenStack系统由…

RPA机器人如何解决非银企直联网银账户的数据自动采集?

数字时代来临,随着全球信息化水平的不断提升,企业们纷纷向自动化办公、数字化转型靠拢。财务部门作为一个企业的重要部门,承担着管理和监控公司所有项目的重要职责,因而一直被视为企业数字化转型的重要突破口。 由于企业经营理念和…

第二十章多线程

线程简介 java语言提供了并发机制,程序员可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发运行。 一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进程…

C语言错误处理之“非局部跳转<setjmp.h>头文件”

目录 前言 setjmp宏 longjmp函数 使用方法: 实例:测试setjmp与longjmp的使用 前言 通常情况下,函数会返回到它被调用的位置,我们无法使用goto语句改变它的返回的方向,因为goto语句只能跳转到同一函数内的某个标号…

python与机器学习1,机器学习的一些基础知识概述(完善ing)

目录 1 AI ,ML,DL,NN 等等概念分类 1.1 人工智能、机器学习、深度学习、神经网络之间的关系: 1.2 人工智能的发展 2 ML机器学习的分类:SL, USL,RL 2.1 机器学习的分类 2.2 具体的应用举例 2.3 数据分类 3 关于阈值θ和偏移量b的由来 4 不同的激…

中小型工厂如何进行数字化转型

随着科技的快速发展和市场竞争的日益激烈,中小型工厂面临着诸多挑战。为了提高生产效率、降低成本、优化资源配置,数字化转型已成为中小型工厂发展的必经之路。中小型工厂如何进行数字化转型呢? 一、明确数字化转型目标 在进行数字化转型之前…

【Linux下基本指令——(1)】

Linux下基本指令——(1) 一. ls 指令1.1.语法:1.2.功能:1.3.常用选项:1.4.举例:1.5.Xshell7展示 二. pwd 命令2.1.语法: 2.2.功能:2.3.常用选项:2.4.Xshell7展示 三. cd 指令3.1.语法…

0004Java程序设计-ssm基于微信小程序的校园第二课堂

文章目录 摘 要目录系统设计开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。…

3D模型纹理集合并【Python|C#】

使用 Substance Painter 时,将模型的各个部分分成不同的纹理集非常有用。 这可以帮助遮罩,或者只是保持层栈干净。 不幸的是,Painter 无法将多个纹理集中的所有贴图导出为单个图集,即使在创建单独对象的 UV 时考虑到了这一点。 显…

SpringCloud实用-OpenFeign整合okHttp

文章目录 前言正文一、OkHttpFeignConfiguration 的启用1.1 分析配置类1.2 得出结论,需要增加配置1.3 调试 二、OkHttpFeignLoadBalancerConfiguration 的启用2.1 分析配置类2.2 得出结论2.3 测试 附录附1:本系列文章链接附2:OkHttpClient 增…

Spring Security 6.x 系列(6)—— 显式设置和修改登录态信息

一、前言 此篇是对上篇 Spring Security 6.x 系列(5)—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架,认证成功…

六、Lua运算符

文章目录 一、Lua 运算符(一)算术运算符(二)关系运算符(三)逻辑运算符(四)其他运算符 二、运算符优先级 一、Lua 运算符 运算符是一个特殊的符号,用于告诉解释器执行特定…

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。 一般来说出现这个问题是因为使用git版本控制工具合并代码出现了问题&#xff0c;想要解决也很简单。 如图点击错误后定位到文件&#xff0c;发现也没有什么问题。 根据错误后边的提示&a…

P9242 [蓝桥杯 2023 省 B] 接龙数列(dp+最长接龙序列+分类)

1. 计算0~9为结尾的最长子串长度 2. 对于每个数字&#xff0c;比较其开头可连接子串长度1 与 原来以其末位为末尾的子串长度 3. 更新以其末位为末尾的子串长度 #include<iostream> #include<string.h>using namespace std;// 相当于记录…

如何运行C/C++程序

一、在线运行C/C 码曰 - 让代码在云端多飞一会&#xff1a;这是一个支持C/C&#xff0c;Java&#xff0c;Python等多种语言的在线编程&#xff0c;编译运行&#xff0c;粘贴分享的平台。你可以在这里输入你的代码&#xff0c;点击运行按钮&#xff0c;就可以看到输出结果。你也…

leetcode 283. 移动零

代码&#xff1a; class Solution {public void swap(int[] nums,int m,int n){int tmpnums[m];nums[m]nums[n];nums[n]tmp;}public void moveZeroes(int[] nums) {int cur0;int dest-1;int nnums.length;for(;cur<n;cur){if(nums[cur]!0){dest;swap(nums,cur,dest);}}} } …

一些好用的12款前端小插件

1. cropper.js Cropper.js 2.0 是一系列用于图像裁剪的 Web 组件。 官网地址&#xff1a;https://fengyuanchen.github.io/cropperjs/v2/zh/ 2. Vditor Vditor是一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得、即时渲染&#xff08;类似 Typora&#xff09;和分…

【Python深度学习第二版】学习笔记之——什么是深度学习

机器学习是将输入&#xff08;比如图像&#xff09;映射到目标&#xff08;比如标签“猫”&#xff09;的过程。 这一过程是通过观察许多输入和目标的示例来完成的。 深度神经网络通过一系列简单的数据变换&#xff08;层&#xff09;来实现这种输入到目标的映射&#xff0c;这…

C++ day42背包理论基础01 + 滚动数组

背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态&#xff0c;取或者不…