NIFT和BMP批量互相转换(matlab)

前言:最近在做数据集,需要进行NIFT和BMP的批量互相转换。之前都是一张一张转换的,用Image J就能完成,但是最近数据太多了,所以得研究一下如何批量转换。

NIFT和BMP互相转换

  • NIFT和BMP介绍
    • NIFT
    • BMP
  • 为什么要转换
  • Matlab进行NIFT和BMP批量互相转换
    • BMP转NIFTI
    • NIFTI转BMP
    • 补充其它编译语言

NIFT和BMP介绍

NIFT

NIFT(Neuroimaging Informatics Technology)是一种常用的医学图片保存格式,通常用来保存三维的数据信息,能够通过ITK-SNAP软件进行数据的标注。

文件后缀为nii和nii.gz,这两个其实是一个东西,nii.gz是nii的扩展名。

BMP

BMP(Bitmap-File)是一种在Windows系统中广泛使用的图像文件格式,其可以不做任何变换地保存图像像素域的数据,基本不压缩从而能够完全无损保存图片信息,经常作为RAW数据的重要来源。

为什么要转换

采集得到的医学图像通常是BMP格式,因为其不压缩且无损。但是标注数据时候,会使用到ITK-SNAP软件,需要传入NIFTI文件,最后标记得到的label数据也是NIFTI文件。由于深度学习需要用的是BMP格式,所以还需要把label数据的NIFTI文件转为BMP。在数据量比较大的时候,有一个批量BMP互转NIFT的工具代码是非常有必要的。

虽然用ImageJ能进行bmp和NIFT的转换,但是批量转换会把多张bmp图像放在一张NIFT中构成三维的数据。这并不是我想要的,我需要的只是对二维图像数据进行标注处理。

Matlab进行NIFT和BMP批量互相转换

BMP转NIFTI

把file_path文件夹中的bmp批量转换为二维的nii到file_save_path中。

file_path='';
file_save_path='';
img_path_list=dir(strcat(file_path,'*.bmp'));
img_num=length(img_path_list);
for i=1:img_numimg=imread(strcat(file_path,img_path_list(i).name));% 如果直接转换成nii会出现图像旋转和翻转的问题img_rot=imrotate(img,90);% 将图像A围绕其中心点进行angle角度的逆时针旋转。img_flip=flip(img_rot,1);% 翻转上下对称,如果是2就是左右翻转niftiwrite(img_flip,strcat(file_save_path,img_path_list(i).name));
end

主要是注意NIFT和BMP互转的时候,需要做一个旋转和翻转,不然转的图像不太对。

NIFTI转BMP

把file_path文件夹中的二维nii批量转换为bmp到file_save_path中。

file_path='';
file save path='';
img_path_list=dir(stract(file_path,'*.nii'));
img_num=length(img_path_list);
for i=1:img_numimg=niftiread(strcat(file_path,img_path_list(i).name));img_rot=imrotate(img,90);img_flip=flip(img_rot,1);imwrite(img_flip,strcat(file_save_path,img_path_list(i).name(1:end-4),'.bmp'),'bmp');
end

补充其它编译语言

可以调用SimpleITK库来实现,它是专门处理医学影像的工具,使用起来非常便捷。
SimpleITK 支持 8 种编程语言,包括c++、Python、R、Java、c#、Lua、Ruby 和 TCL。

本来想用python实现的,但是本地没有安装python,服务器那边不太熟悉,就没有用Python实现了。

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

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

相关文章

MVC和MVVM

MVC Model层:用于处理应用程序数据逻辑的部分,通常负责在数据库中存取数据 View(视图)处理数据显示的部分。通常视图是依据模型数据创建的 Controller(控制器)是处理用户交互的部分。通常控制器负责从视…

从零开始学Vue3--环境搭建

1.搭建环境 下载nodejs nodejs下载地址 更新npm npm install -g npm 设置npm源,加快下载速度 npm config set registry https://registry.npmmirror.com 使用脚手架创建项目 npm create vuelatest 根据你的需要选择对应选项 进入新建的项目下载依赖 npm in…

Tasker+SendSilentMail实现钉钉自动打卡

Tasker 允许用户根据自定义的“配置文件”(Profiles),在特定的“背景”(Contexts)下,执行指定的“任务”(Tasks)。以下是关于Tasker的详细介绍: 强大的自定义能力:用户可以根据自己的需求,创建各种配置文件和任务&…

【BUG】流式响应requests得到: ping - 和时间戳

前情提要 运行Langchain-Chatchat项目,使用自定义请求访问API Server流式输出 报错展示 b: ping - 2024-05-22 00:46:04.83252000:00\r\n\r\n报错原因 这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制,以确保连接保持活跃。一些 SSE…

Java 在Word文档中添加、删除页面

在排版或者编辑Word文档时,可能会需要增加新页面或删除某个已有页面,以便更好地呈现内容。下面将介绍如何使用国产Java控件来实现在Word文档中增删页面的功能。 目录 Java 在Word文档末尾新增一页 Java 在Word文档指定位置插入一页 Java 删除Word文档…

百度ERNIE系列预训练语言模型浅析(4)-总结篇

总结:ERNIE 3.0与ERNIE 2.0比较 (1)相同点: 采用连续学习 采用了多个语义层级的预训练任务 (2)不同点: ERNIE 3.0 Transformer-XL Encoder(自回归自编码), ERNIE 2.0 Transformer Encode…

用Python实现办公自动化

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

用Kotlin协程消灭安卓开发中的回调地狱

原创 Pony 拍码场 安卓原生开发的痛点 自Android平台推出以来,Java一直是开发Android应用的主要语言。尽管后来Kotlin成为了谷歌主推的编程语言,Java仍然被广泛使用,在Android开发中仍占有重要地位。从github的数据看,用Java写的…

洗地机什么品牌质量好?家用洗地机排行榜

一年一度的大促节又到了,各大电商平台和实体店纷纷推出力度不小的折扣活动,吸引着消费者的关注和购买欲望。很多家庭也趁着这个机会,购置一些智能家居产品来提升生活品质。其中,洗地机作为近年来发展迅速的明星产品,受…

Redis篇 哈希表在redis中的命令

哈希命令 一.哈希表的基本认识二. 哈希表在redis中的命令1.hset,hget2.hdel3.hkeys,hvals4.hexists5.hgetall6.hmget7.hlen8.hincrby和hincrbyfloat 一.哈希表的基本认识 在JAVA数据结构中,我们就已经接触到了哈希表, 在当时,我们主要用到的哈…

人工智能和大模型的区别

人工智能(AI)和大模型是两个相关但有区别的概念。理解它们之间的区别有助于更好地掌握现代科技的发展动态。 人工智能(AI) 人工智能(Artificial Intelligence, AI)是一个广义的概念,指的是通过…

React18 apexcharts数据可视化之折线图

基础折线图 import ApexChart from react-apexcharts;export function Basic() {// 数据序列const series [{name: "Desktops",data: [10, 41, 35, 51, 49, 62, 69, 91, 148]},]// 图表选项const options {// 图表chart: {height: 650,type: line,zoom: {enabled:…

springboot发送短信验证码,结合redis 实现限制,验证码有效期2分钟,有效期内禁止再次发送,一天内发送超3次限制

springboot结合redis发送短信验证码,实现限制发送操作 前言(可忽略)实现思路正题效果图示例手机号不符合规则校验图成功发送验证码示例图redis中缓存随机数字验证码,2分钟后失效删除redis缓存图验证码有效期内 返回禁止重复发送图验证码24小时内发送达到3次&#xf…

【Leetcode 206】 反转链表——此递归相当妙啊

题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: …

【机器学习300问】105、计算机视觉(CV)领域有哪些子任务?

计算机视觉作为人工智能的重要分支,发展至今已经在诸多领域取得显著的成果。在众多的计算机视觉任务中,图像分类、目标检测与定位、语义分割和实例分割是四个基本而关键的子任务,它们在不同的应用场景下扮演着重要角色。这四个子任务虽然各具…

深入理解JVM:内存结构、垃圾收集与性能调优

目录 JDK、JRE、JVM关系? 启动程序如何查看加载了哪些类,以及加载顺序? class字节码文件10个主要组成部分? JVM结构 画一下JVM内存结构图 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池? 什么时候抛出StackOverflowError? 例如&…

海医大三院使用先进血管外科微创技术成功救治危重主动脉夹层患者

近日,上海东方肝胆外科医院血管外科周建教授团队采用主动脉弓分支型一体化移植物联合体外开窗技术,成功救治复杂危重主动脉夹层患者,为上海嘉定首例,彰显了上海东方肝胆外科医院血管外科的优势与特色。 患者谢先生,72岁,两周前突发剧烈胸背部撕裂样疼痛,休息后症状未能得到缓解…

多模态开源项目实战(https://github.com/QwenLM/Qwen-VL)

GitHub - HqWu-HITCS/Awesome-Chinese-LLM: 整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主,包括底座模型,垂直领域微调及应用,数据集与教程等。 1.AttributeError: ChatGLMTokenizer object has n…

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽,大家好,我是木头左! 为何选择QMT和VSCode进行量化策略开发? 在量化交易的世界里,选择正确的工具与拥有优秀的策略同等重要。调用用Visual Studio Code(简称VSCode)或pycharm,方…

JAVA 大鱼吃小鱼小游戏

java实现大鱼吃小鱼,支持身份证防沉迷、账号密码、选择难度 放沉迷 登录 选择难度 游戏界面