如何将图像数据转换为.mat文件,mat文件内是cell封装的struct格式的数据

在我看论文:《 Holistically-nested Edge Detection (HED) 》的时候,对论文中有关边缘结果的评价指标很感兴趣,于是我就研究了如何计算这些指标

如果有同样感兴趣或者有需要的小伙伴可以下载这里的代码:GitHub - xwjabc/hed: A PyTorch reimplementation of Holistically-Nested Edge Detection 进行学习,相信会给你带来收获的!

其中,我在运行文件 eval_edge.m 的时候总是会报错,如图所示:

看错误的位置是在文件 edgesEvalImg.m 第55行处:引用了不存在的字段 ' groundTruth ' ,打开该文件,可以看到有这样一句代码:

通过我对该文件源码的理解,此处的G是真实边缘标签图像数据所在的路径,所以我应该将我的tif格式的图像数据转换为字段为groundTruth的MAT文件

这是我的40张真实边缘标签图像

在这里,我使用如下图所示的代码对40张真实边缘标签图像数据进行转换

转换结果如下图所示:

可以看到每张tif图像数据都对应着其mat文件,说明转换成功了!

But

当我再次运行eval_edge.m文件的时候,又出现了新的错误,如图所示:

这个错误依然发生在文件 edgesEvalImg.m 中,在该文件的第77行处:此类型的变量不支持使用花括号进行索引

这说明数据依然不符合这里要求的格式

经过上网查找资料,我意识到这里需要的是由cell数组封装的struct的mat文件

所以不但需要将边缘标签图像数据转换为.mat文件,而且还应该是由cell数组封装的结构体mat文件

故,使用如下图所示代码可以将40张真实边缘标签图转换为符合要求的数据格式

# 每张tif格式的图像数据转换为mat文件,该mat文件是由cell数组封装的struct类型的
import scipy.io as sio
data_dir = 'images/test_mat/'
for filename in os.listdir(data_dir):name_extracted = filename.rsplit('.', maxsplit=1)[0]  # 使用 rsplit() 函数以 '_' 分割文件名,仅获取前两个部分print(f"基本名称为:{name_extracted}")print(f"图像路径为:{os.path.join(data_dir,filename)}")# img = cv2.imread(os.path.join(data_dir,filename))img = cv2.imread(os.path.join(data_dir,filename),0)label_name = f"images/test_mat/{name_extracted}.mat"  sio.savemat(label_name, {'groundTruth':[{'Boundaries':img}]})

运行结果如下图所示:

可以得到新的转换后的mat文件,将它们用matlab打开,可以看到如图所示的数据存储结构:

首先是一个cell数组,其次cell数组是一个1x1的struct(结构体),结构体中是大小为512x512的图像矩阵

此时再次运行文件 eval_edge.m,可以看到成功了!

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

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

相关文章

单片机原理及应用:独立式键盘控制LED与多功能按键识别

今天来介绍另一个外设——按键与LED的配合工作,与开关不同,按键需要注意消除抖动带来的影响,代码逻辑也会更复杂一写,下面先为大家介绍独立式键盘的相关知识。 单片机的独立式键盘指的是一种不依赖于计算机或其他外部设备的键盘输…

Calibre PEX Hspice Netlist提取步骤(数模芯片提取spice netlist流程)

在数模混合芯片中,通常模拟需要数字模块通过calibre工具来提取Hspice netlist用于功耗仿真。注意这里的spice netlist和做Calibre的spice netlist是不太一样的。 另外在做calibre pex时需要确保当前的design LVS已经pass。否则功耗仿真可能会不准。 Calibre LVS常…

rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器

在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua 脚本定义一个 translator,并以 五笔・拼音 为例引用了该 translator,并且达到了预期的效果。 今天,我们继续通过 lua 脚本为 rime中州韵/小狼毫 输入法打造一个 translat…

JRT控制打印机

本次测试打印机控制和纸张方向控制。 打印机状态 选择打印机 控制纸张 定义纸张 旋转纸张 不旋转纸张 A4

BLE Mesh蓝牙组网技术详细解析之Access Layer访问层(六)

目录 一、什么是BLE Mesh Access Layer访问层? 二、Access payload 2.1 Opcode 三、Access layer behavior 3.1 Access layer发送消息的流程 3.2 Access layer接收消息的流程 3.3 Unacknowledged and acknowledged messages 3.3.1 Unacknowledged message …

php安装扩展event 提示 No package ‘openssl‘ found 解决方法

在使用pecl编译安装最新版event模块的时候提示 No package openssl found , 可是本机是安装了openssl的, 编译时找不到, 大概率就是环境配置的问题了, 增加 OPENSSL_CFLAGS OPENSSL_LIBS环境变量即可解决. 异常提示信息: checking for openssl > 1.0.2... no configure: …

在pycharm中jupyter连接上了以后显示无此库,但是确实已经安装好了某个库,使用python可以跑,但是使用ipython就跑不了

今天遇到一个事情,就是用pycharm的jupyter时,连接不上,后来手动连接上了以后,发现环境好像不对。 一般来说,这里会是python3,所以里面的环境也是普通python的环境,并没有我下载的库,…

Python学习笔记之(一)搭建Python 环境

搭建Python 环境 1. 使用工具准备1.1 Python 安装1.1.1 下载Python 安装包1.1.2 安装Python 1.2 VScode 安装1.2.1 下载VScode安装包1.2.2 给VScode安装Python 扩展 2. 第一次编写Python 程序 本篇文章以Windows 系统为例。 1. 使用工具准备 1.1 Python 安装 1.1.1 下载Pytho…

虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化

导读:在数字化工厂和智能制造的时代,数据已经成为优化机器和流程的关键。然而,如何高效地收集和处理这些数据,特别是在开发、部署和生产阶段,仍是企业面临的一大挑战。虹科TigoLeap平台,作为一款引领行业变…

k8s快速搭建

VMware16Pro虚拟机安装教程VMware16.1.2安装及各版本密钥CentOS7.4的安装包:提取码:lp6qVMware搭建Centos7虚拟机教程 搭建完一个镜像 关机 拍摄一个快照,克隆两个作为子节点 0. 环境准备 在开始之前,部署Kubernetes集群机器需要满足以下几个条件&#…

每周一算法:倍增法查找位置

倍增法 倍增法(Binary Lifting),顾名思义,就是利用“以翻倍的速度增长”的思想来解决问题的一类算法。 下面介绍如何使用倍增法在有序的序列中查找满足条件的位置。 题目描述 给定一个单调不降的序列,以及 m m m个…

78 Python开发-多线程FuzzWaf异或免杀爆破

这里写目录标题 本课知识点:学习目的:演示案例:Python开发-简单多线程技术实现脚本Python开发-利用FTP模块实现协议爆破脚本Python开发-配合Fuzz实现免杀异或Shell脚本 涉及资源: 本课知识点: 协议模块使用,Request爬虫技术,简易多线程技术,…