bat文件无法保存为ansi_数组矩阵和PNG保存为nii文件

f042e456005ce986109ab70da47d3eb7.png

nii文件或者nii.gz文件是一种特殊的文件格式,可以存储叠加的切片数据或者时序数据,比如MRI头部矢状面扫描的所有切片,CT扫描图,多细胞时移图等等。对于nii文件的读取和存储也有许多的方法。

一般地,如果一个数组矩阵 ,想要保存成为nii文件:首先需要安装SimpleITK库或者nibabel库,由于nibabel库保存矩阵为nii文件时,会涉及到affine矩阵(一般的会设置为单位对角4*4矩阵),但是很多文件存储的affine坐标是有格式和规定的,所以在不知道保存文件affine矩阵的情况下,用nibabel保存可能会有点麻烦。

nibabel库详解:

Neuroimaging in Python - NiBabel 3.1.1 documentation​nipy.org

SimpleITK库详解:

https://github.com/SimpleITK/SimpleITK​github.com

这里选择使用SimpleITK库保存矩阵为nii文件:

import SimpleITK as sitk

nii_file = sitk.GetImageFromArray(anno_mat)
# anno_mat 为一个矩阵,其维度必须是按照(样本数*高度*宽度)排列
否则,保存的结果错误
sitk.WriteImage(nii_file,nii_path) # nii_path 为保存路径

这里需要特别注意保存的矩阵的维度排布。

接下来使用SimpleITK保存png图片为nii文件:

png图片的特点是4个通道,RGBA,最后一个通道是透明度,但是如果后续对保存的nii文件有和其他图片进行overlay的需求,需要剔除最后一个A 通道,否则会出现问题。

这里使用PIL库读取PNG图片:

from PIL import Image
import numpy as np

empt_mat=[]
for i in png_path:
  img1=Image.open(i)
  img2=np.array(img1)[:,:,0:3]
# 这里取png图片的前三个通道,去除第四个透明通道
方便后续的nii文件的处理
  empt_mat.append(img2)

emp=np.array(empt_mat)
nii_file = sitk.GetImageFromArray(emp)
# 此处的emp的格式为样本数*高度*宽度*通道数
不要颠倒这些维度的顺序,否则文件保存错误
sitk.WriteImage(nii_file,nii_path) # nii_path 为保存路径

注意丢弃PNG图片的第四个通道

另外推荐一个3D slicer软件,专门用于nii切片文件的后续处理,比如对切片特定区域的标记,分割等等操作。

https://www.slicer.org/​www.slicer.org
.nii格式文件解析 阅读详情

相关推荐

dicom转nii时,解决切片顺序保存混乱的问题

在将dicom转nii的时候遇到了一个问题,就是医院给的dicom数据的每一个切片的命名是乱的,转成nii之后序列的z轴完全就是乱的,如下所示: 按切片顺序打印的图像,完全就是乱序的,在ITK中打开也可以看到图像z轴是乱的: 在网上找的dcm转nii的代码都是按照dcm命名来对dcm进行排序的,但是医院有时候给的数据命名不规范 解决方案: 用MicroDicom打开dicom图像,查看Dicom Tags,使用Instance number对切片进行排序,这个字段是存在dcm图像中的,而且按切片顺序保存

qq_36421001的博客 2812

python使用nibabelsitk读取保存nii.gz文件实例

nii.gz格式是医学图像常用的压缩格式,python中可用nibabelsitk来读取保存。 使用nibabel 由于使用nibabel图像会旋转90度,所以读取保存的时候还得保存映射信息,3维图像格式为(z, y, x) 读取nii.gz文件 img = nib.load('xxxxx.nii.gz') img_affine = img.affine img = img.get_data() 保存nii.gz文件 nib.Nifti1Image(img,img_affine).to_filename(‘xxxxx.nii.gz’) 使用sitk 使用sitk读取nii时,读取出来的

执行 bat 乱码并且另存为ANSI也没用的解决方法

一时手贱把系统区域改成台湾(其实是为了开种子市场),然后把区域改回来,发现原来的所有bat文件运行时都成乱码了。 另存batANSI的方法不管用,这个不是UTF8或ANSI编码的原因,是活动代码页变成了big5码。可以运行cmd,执行命令chcp 936 将编码改回GBK,改一次所有的bat都正常了。这个命令还可以用在bat头部声明编码。 DISS为什么改区域这货的编码会跟着改,改回来却不...

the_tom的学习笔记 2577

python怎么保存nii文件_nii文件在python中的使用

NIFTI格式图像NIFTI(Neuroimaging Informatics Technology Initiative)格式图像是由一个包含头文件元数据一个包含二进制的图像资料组成的文件。读取NIFTI格式图像可以通过软件ITK-SNAP打开可以看到:ITK-SNAP获得了分别来自三个角度的视图(水平面、矢状面、冠状面)使用Python读取2.1 simpleITKimport Simple...

weixin_39768444的博客 983

【医学影像数据处理】nii 数据格式文件操作汇总

nii文件格式,在对医疗数据处理的过程中,无处不在,是一个最最经常会遇到的。了解操作nii文件,对其中可能遇到的问题有一些基础的了解,至关重要。但是,现在我更喜欢nrrd文件了,不知道你是否知道nrrd文件

钱多多先森 6484

从科研到临床:ASL脑灌注数据后处理避坑指南(ExploreASL/BASIL实战)

本文详细介绍了ASL脑灌注数据后处理的实战经验,涵盖数据标准化、ExploreASLBASIL工具的应用技巧,以及临床转化中的特殊场景处理。通过具体案例代码示例,帮助研究者避免常见错误,提升ASL数据分析的准确性效率,特别适合多中心研究临床诊断场景。

340

读取DICOM文件并转换为PNG(使用ITK)

在本文中,我们将学习如何使用ITK(Insight Segmentation and Registration Toolkit)库来读取DICOM文件并将其转换为PNG格式。一旦我们成功读取DICOM文件,接下来的步骤是将其转换为PNG格式。使用ITK库的功能,我们可以轻松地读取DICOM文件。在上面的代码中,将"path_to_save_png_file.png"替换为您希望保存PNG文件的路径。在上面的代码中,将"path_to_dicom_file.dcm"替换为您实际的DICOM文件路径。

ZoMaster的博客 429

nii数据的各种处理详解

Nifti数据本身是除了矩阵信息(也就是图像信息之外),还有物理坐标相关的仿射矩阵以及Header头文件信息,但是nibabel的获取数据的方法get_data() 把nii数据转成png格式会损失很多信息,因为png格式图像的灰度值有256阶, 因此直接使用nii的医学图像做输入会更好一点。但是Pythorch中的Dataloader是不能直接读取nii图像的,因此加一个CreateNiiDataset的类。 pytorch中读取数据的主要途径——Dataset类。在自己构建数据层时都要基于这个类,

qq_44289607的博客 1万+

【医学影像数据处理】nii、npz、npy、dcm、mhd 的数据格式互转,及多目标分割处理汇总

医学领域进行数据处理的DICOM、.nii、.npy、.mha、.npz,jpeg、png等格式。

钱多多先森 3万+

Gradio 案例——将 dicom 文件转为 nii 文件

功能:利用 dcm2niix 将 dicom 文件转为 nii 文件 可视化:使用 Gradio 将该功能可视化,分为本地端使用通用端使用方式

蒋含竹的博客 1165

simpleitk入门指南

SimpleITK支持多种编程语言,如Python,C++,Java等,并且可以处理多种医学图像格式,如DICOM,NIfTI,PNG等。本文将介绍SimpleITK的基本使用方法,包括安装,读写图像,图像变换滤波等。然后可以使用`Transformix`函数来对一个图像进行变换,或者使用`Resample`函数来对一个图像进行重采样。print(image.GetDirection()) # 输出:(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)

qq_27793597的博客 4068

【Python】SimpleITK使用笔记

1. 概念 1.1 nii格式 1.2 SimpleITK 1.3 SimpleITK 图像 2. 基本操作 2.1 常见属性 2.1 读取保存图像 2.2 SimpleITK图像数据Numpy矩阵数据之间的转换

See_Star的博客 7850

numpy array保存为.nii.gz格式

将.nii文件读取成numpy array是很常见的,但将分割好的结果numpy array保存nii格式却也是必须的。 使用SimpleITK保存: ## using simpleITK to load and save data. import SimpleITK as sitk itk_img = sitk.ReadImage('./nifti.nii.gz') img = sitk.GetArrayFromImage(itk_img) print("img shape:",img.shape

qq_36201400的博客 4412

numpy array保存nii格式

将.nii文件读取成numpy array是很常见的,但将分割好的结果numpy array保存nii格式却也是必须的。 现在介绍两种将numpy array保存nii格式的方法。 1、SimpleITK ## using simpleITK to load and save data. import SimpleITK as sitk itk_img = sitk.ReadImage('./nifti.nii.gz') img = sitk.GetArrayFromImage(itk_img)

程序客栈 8871

nibabel与simpleitk对修改后的医学图像无损失的保存

nibabel与simpleitk对修改后的医学图像无损失的保存

m0_61183667的博客 1738

将批量图片转换成NIFTI(.nii)格式

NIFTI (Neuroimaging Informatics Technology Initiative)是一种常用的医学图片保存格式(NIfTI-1 Data Format — Neuroimaging Informatics Technology Initiative (nih.gov))。可以用软件FSL (参考:(66条消息) 如何处理.nii文件_暮日落流年的博客-CSDN博客_nii文件用什么打开)ITK-SNAP(怎样打开并查看.niiDICOM格式的医学图像_zuzhiang的博...

qwertyu_1234567的博客 1万+

bat文件无法保存ansi_将CMD信息保存文件

在使用Windows中的cmd.exe工具时,有时候我们想要把我们的输入命令及结果保存起来,但是用复制的方法过于麻烦;有时输出数据条数过大,会造成内容自动滚出屏幕,无法阅读,我们可将命令运行的结果输出到文本文件。如何将cmd中命令输出为TXT文本文件呢? 老实孩子教给大家一个方法:在你输入命令后再加上“>”你想保存文件地址名字就行了。例如:将Ping命令的加长包输出到D盘的ping.t...

weixin_39616071的博客 741

python怎么保存nii文件_python处理nii文件

第一步安装nibabel,可以使用命令:pip install nibabel之后:from nibabel.viewers import OrthoSlicer3D as osdimport nibabel as nibfilename = 'image.nii'img = nib.load(filename)#输出文件信息print(img)w,h,q = img.dataobj.shape#...

weixin_39673293的博客 667

医学图像预处理(一)——读取图片(dcm,nii,PIL,skimage,cv2)

总结一下目前遇到的一些医学图像预处理步骤,但才开始自学两周,所以很多东西或许不对或者不全面,以后争取每两周回顾以前的文章,将内容完善,并提高质量。(2019-3-5) 由于篇幅原因,将预处理的步骤分开来,这一篇将总结读取图片的方法。 文章目录读取DICOM格式读取普通的图片案例一:skimage读取图片案例二,PIL读取图片读取nii格式 读取DICOM格式 用到的包:pydicom 例如,以公共...

normol的博客 3万+
上一篇: chart控件做实时曲线显示_Python 如何实时绘制数据
下一篇: python except用法和作用_python上手--异常处理与文件
weixin_39763640
博客等级 码龄9年 36粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值