图片缩略图

NIfTI和ANALYZE图像的工具

版本1.27.0.0 (426 KB 吉米沈
在任何平台上加载、保存、制作、重新剪切、查看(和编辑)NIfTI和ANALYZE数据

510下载

更新2014年1月22日

查看版本历史

查看许可协议

编者按:受欢迎的文件2018

请随时查看NIfTI_tools.pdf了解详细描述和最新更新。

如果你对ANALYZE图像的左/右感到困惑,请阅读UseANALYZE.pdf。

您也可以通过FAQ.pdf获得实际的解决方案和真实的例子。万博 尤文图斯

基本程序:

1.load_untouch_header_only。m:只加载NIfTI或ANALYZE文件的头部部分。输入文件将被自动检测。NIfTI文件将返回NIfTI结构,ANALYZE文件将返回ANALYZE结构。

2.load_nii。m:加载N维NIfTI文件(其中N可以从3到7)或ANALYZE文件(其中N可以从3到4),并将头信息(例如,仿射几何变换,体素强度缩放等)应用到数据。如果你的文件超过3维(例如时间序列等),你也可以指定一个范围来提取一个或几个卷。

3.save_nii。m:保存由load_nii加载的N维NIfTI结构(其中N可以从3到7)。M或make_nii。m”写入NIfTI文件。

4.make_nii。m:根据N维矩阵和其他可选参数(如voxel_size, origin等),创建N维NIfTI结构(其中N可以从3到7)。使用"save_nii"命令可以将"make_nii"生成的NIfTI结构保存为NIfTI文件。

5.make_ana。m:根据3D矩阵和其他可选参数(如voxel_size, origin等)制作3D ANALYZE结构。通过“save_untouch_nii”命令,可以将“make_ana”生成的ANALYZE结构保存到ANALYZE文件中,以便与某些仅支持ANALYZE的程序兼容。

6.reslice_nii。m:重新采样3D(或4D) NIfTI文件或。mat文件中带有仿射矩阵m的ANALYZE文件,并将重新采样的数据保存到新的NIfTI文件中。该程序将基于仿射矩阵,这是特别有用的斜图像与非正交旋转或剪切不能加载“load_nii.m”。您还可以指定voxel_size等。它不会造成负面影响,只要你记得不要在使用“reslice_nii.m”后进行切片时间校正。

7.pad_nii。m:在NIfTI结构中从六面中的任意一面填充卷,同时保持原始源、体素大小、数据类型和描述不变。在使用reslice_nii之后,该程序特别有用,因为新卷很可能具有不同的维度。

8.clip_nii。m:从NIfTI结构的任何一个侧面截取卷,同时保持原始者、体素大小、数据类型和描述不变。在使用reslice_nii之后,该程序特别有用,因为新卷很可能具有不同的维度。

9.view_nii。m:查看和编辑3D(或4D) NIfTI或ANALYZE结构加载“load_nii. m”。或由“make_nii.m”制作。激活图、ROI等可以叠加在背景图像上(见上图)。绘制的视图可以嵌入到现有的图形窗口中。如果您使用它作为一个单独的程序,它还可以编辑图像的方向和体素值,查看体积直方图,并保存修改后的图像。

10.load_untouch_nii。m:加载N维NIfTI文件(其中N可以从3到7)或ANALYZE文件(其中N可以从3到4),但不应用header中指示的任何更改。警告:不要使用“view_nii”。查看“load_untouch_nii.m”加载的结构。

11.save_untouch_nii。m:保存由load_untouch_nii加载的N维NIfTI结构(N可以从3到7)或ANALYZE结构(N可以从3到4)。“M”或由“make_ana”制成。m”导入到新的NIfTI或ANALYZE文件中。如果不修改加载的数据集,则新保存文件中的头文件和数据应与原始文件中的头文件和数据相同。

其他项目:

1.collapse_nii_scan。m:将多个单扫描NIfTI或ANALYZE文件集成为一个多扫描NIfTI文件。

2.expand_nii_scan。m:将一个多扫描的NIfTI文件拆分为多个单扫描的NIfTI文件。

3.save_untouch_slice。m:用load_untouch_nii加载的部分切片保存回原始图像。您可以以任何方式处理这些片矩阵,只要它们的维数不改变。

4.get_nii_frame。m:返回NIfTI文件的时间帧数。

5.flip_lr。m:将NIfTI或ANALYZE文件沿发起者的平面从左向右翻转,将从左向右翻转的数据保存为NIfTI文件。警告:请谨慎使用此程序,尽管您总是可以将其翻转回来。

6.load_nii_ext。m:从NIfTI文件加载头扩展。

7.mat_into_hdr。m:将旧SPM .mat文件中的仿射矩阵集成到它的.hdr头文件中。因此,ANALYZE文件被转换为带有更新的.hdr头文件的NIfTI文件。

引用作为

吉米·沈(2021)。NIfTI和ANALYZE图像的工具(//www.tianjin-qmedu.com/matlabcentral/fileexchange/8797-tools-for-nifti-and-analyze-image), MATLAB中央文件交换。检索

评论及评分(222

Edite Figueiras

你好,我有一个大数据集(大约100 GB),我想用nii格式保存。我没有足够的内存,无法打开完整的数据集。是否有办法将完整的数据集保存在一个nii文件中?

你好,是否可以保存nifti格式的图像(从分析转换),而不修改nifti图像的标题?
我有程序不让我打开它,因为头被修改了,特别是帧的持续时间。(我一直在使用save_nii函数)。我的邮箱是a.vigil@alumnos.upm.es。
谢谢。

darova

Mehul耆那教徒的

你好,
我得到22边带作为输出。如何连接到CSV文件??

马库斯Adamek

我遇到的问题是,在默认情况下,load_nii允许10%的偏离正交变换,这是相当大的。

马库斯Adamek

对比Freeview的mm坐标,在转换中有一个明确的问题,造成了错误的mm坐标!

贾基尔Aralbaev

我下载了NIFTI压缩包。文件将它们保存到文件中,然后添加到Matlab中的Set路径。现在我怎么打开工具箱呢?在matlab命令窗口中输入什么?

千千方

如果任何人看到需要读取NIfTI-2文件,或在MATLAB下的-nojvm模式下读取.nii.gz/.hdr.gz/.img.gz文件,或在GNU Octave下读取这些文件,请尝试我的新工具箱“JNIfTI”

//www.tianjin-qmedu.com/matlabcentral/fileexchange/72756-jnifti-fast-portable-nifti-1-2-reader-nii-jnifti-converter

它使用MATLAB中的memmapfile进行快速磁盘读取。它还支持从严格的万博1manbetxNIfTI-1/2二进制格式到更灵活的基于文本/二进制JSON的新JNIfTI格式的转换,该格式在JNIfTI规范中定义https://github.com/fangq/jnifti/,使数据文件的尺寸更小,加载/保存速度更快,人类可读和可扩展。

JNIfTI工具箱可以使用基于Java的gzip压缩,与此工具箱相同,但也可以使用ZMat工具箱(//www.tianjin-qmedu.com/matlabcentral/fileexchange/71434-zmat)用于快速压缩/解压。

banikr

当我使用niftiwrite时,我也面临轴的变化…前变后,右变左…
这些文件解决了这个问题吗?

你好,我遇到一个问题。当我加载nii时,像吹:
Info = load_nii (str);
图片= info.img;
info.img =图像;
save_nii(信息,savepath);
我发现nii的变化是相反的。如何轻松解决,保存nii和加载nii一样。

Brian2005

汤姆·柯克

不幸的是,我发现这有很多bug。一个简单的例子是加载一个图像,然后使用load_nii和save_nii函数保存它的副本。在我的机器上,这导致副本具有稍微不同的vox2ras矩阵(这肯定不是舍入误差)。因此,在过去的几个月里,这个工具箱给我带来了很多麻烦,当您甚至不能确定诸如此类的实用函数是否在工作时,对代码进行故障排除是非常困难的。我的批评只是建设性的,并作为对其他人的警告,我仍然感谢作者的努力。

nermeen abdo

我下载了NIFTI压缩包。文件将它们保存到文件中,然后添加到Matlab中的Set路径。现在我怎么打开工具箱呢?在matlab命令窗口中输入什么?

乔斯·波旁·泰勒斯

你好,

我下载了NIFTI压缩包。文件将它们保存到文件中,然后添加到Matlab中的Set路径。现在我怎么打开工具箱呢?在matlab命令窗口中输入什么?

Jayendra Bhalodiya

Haoran刘

d .李

MATLAB 2017b有niftiread(' ')函数,它工作得非常好。几天前我也在加载nii文件,只是想分享这个“新闻”,希望这可能会帮助到你们中的一些人:)

郝张

nssk苏拉


在使用load_nii(tst.nii)加载图像之后
如何从nii 1*1结构访问img矩阵?

Jobin T Philip

年代

嗨。
我用这个工具创建了图像。然而,当我试图使用C函数读取它们时,它给出了错误。当然,与其他分析图像,我的功能工作良好。
有人遇到过这个问题吗?

乌米特科里奇

嗨,谢谢分享。它的工作原理。我的工作是大脑核磁共振,需要对它们进行一些图像处理。我如何将它们转换为适当的文件,以实现一些图像处理/挖掘操作。

安德烈·席尔瓦

Helmar Waiczies

Javaid伊克巴尔

语tekchandani
亲爱的,你读过。nii图像并转换成。jpg了吗?
如果你有解决方案,请和我分享。
谢谢
javaid.ciit@gmail.com

语tekchandani

嗨,转换。nii到jpeg(使用load_nii和imwrite) jpeg图像的坐标不匹配。我认为需要一些翻转和旋转的指导,但我不知道是什么顺序。请帮助。

语tekchandani

嗨,转换。nii到jpeg(使用load_nii和imwrite) jpeg图像的坐标不匹配。我认为需要一些翻转和旋转的指导,但我不知道是什么顺序。请帮助。

西尔维亚Caminiti

你好吉米,
我正在使用您的工具箱修改。nii图像与一组(n=95)掩码/ROI。我需要用一个特定的名称更改每个单一掩码的名称。我该怎么做呢?

谢谢
西尔维亚

斯特拉·古尔德

你好吉米,

我试图使用你的工具箱来改变我的图像的数据类型从int16到float32。我在之前的评论中看到,这可能是可能的,但我在转换时遇到了一些麻烦。这是我目前所做的:

数据类型= 16;%更改数据类型为float32
Nii2 = make_nii(myoldnii_file. Nii2)Nii,[],[],数据类型);
save_nii (nii2 mynewnii_file.nii);

我得到的错误消息是:数据类型是不支持的make_nii。万博1manbetx

是否可能转换nii文件这种方式或我在这里做错了什么?

提前感谢您的帮助。
最美好的祝福!

Farzana帕文

所有文件在运行时显示错误!如何读取.nii映像??

金东奎

Ellankavi Ramasamy

你好吉米,

谢谢你的工具箱。这真的很有帮助,我想引用你的工作。我该如何引用你的作品?

谢谢,
Ellankavi

熊猫大

你好~
我无法获取overlay.ziphttp://www.rotman-baycrest.on.ca/~jimmy/NIFTI/overlay.zip
能否提供一个新的地址来获取EEG ?nii和Ti.nii
谢谢你!

安吉丽娜B。

你好~
我有3D和4D大脑MRI nii文件。当我想加载和查看文件时,我遇到了一些麻烦。
我的方法是:nii = load_nii ('VSD.Brain.XX.O.MR_4DPWI.124517.nii');
使用xform_nii>change_hdr错误

接下来,我尝试使用reslice_nii。但问题是:
我的输入:reslice_nii('VSD.Brain.XX.O.MR_4DPWI.124517。nii”、“VSD.Brain.XX.O.MR_4DPWI.124517b.nii”);
错误:索引超过矩阵维数。

我该如何解决这些问题?

谢谢你!

叫海波

夏天

Eteri Karamamedogly

你好,
我有200个。hdr/。每个人的img文件对,使用SPM进行预处理。

如何在Matlab中从fMRI时间序列中提取体素时间课程?

周案

@王建聪这在工具箱附带的FAQ.pdf中的第一个“方向相关问题”中有解释。对于一些NIfTI文件,它将简单地通过加载和保存而翻转,而不需要任何进一步的更改。但是,在新的NIfTI文件中不会发生这种翻转。

然而,我认为在不通知用户的情况下翻转方向不是一个好习惯。

Hesham Alghodhaifi

你好,
我找到了两个漂亮的文件图像的变形位移图的直方图。我想知道x轴的单位我怎么知道x y z轴的方向我怎么知道正边和负边?

卡尔Spuhler

@Shereen,你的意思是你需要知道如何为你的图片设置阈值?

这非常简单。对于一个叫nii的图像和一个给定的阈值th:

Nii = Nii >th

当原始值大于阈值时你会得到1的图像当原始值小于或等于阈值时你会得到0的图像。

Shereen Ekhlas

请帮忙
我想知道如何将。nii图像转换为二值图像
谢谢

正如王建聪和Stefano Orsolini所说,在没有任何通知的情况下,研究方向从放射系统转向了神经系统。此外,没有地方指定数据方向。

所有其他的函数都是可以工作的,只是要记住改变方向。

斯特凡诺Orsolini

正如王建聪评论(2016年8月22日)所述,定向处理存在一个非常严重的问题。

放射学参考图像被转化为神经学参考图像。

imu931

卡尔Spuhler

Jiancong王

这个工具糟透了。它甚至不是自洽的。
你做
[nii] = load_nii('some_nii')
write_nii (nii new_nii)

新保存的版本与旧版本的轴方向不同!这是任何可用的图像处理工具箱都不应该犯的愚蠢错误。

贾斯汀Blaber

你好,

你知道我可以使用“rot_orient”和“flip_orient”中的信息将b向量重新排列成dwmri的RAS的正确方法吗?例如,在我用load_nii()加载我的DWI后,如下所示:

>>
Rot_orient: [1 2 3]
Flip_orient: [3 0 0]

我如何使用这些字段来改变翻转/置换bvector(在FSL格式),也将它们转换为RAS?

谢谢!

阿卡纳malagi

你好,
请帮助,当使用rri_orient时出现错误:
nii = rri_orient(“a_0424_MR1_mpr-1_anon.nii”、“新”);
尝试引用非结构数组的字段。

rri_orient中的错误(第26行)
Dim = double(nii.hdr.dime.dim([2:4]));

阿拉shamasneh


我不知道怎么用这个工具

大卫Groppe

感谢这段最有用的代码!

大卫Groppe

阿里Aghaeifar

谢谢你的好工具。
在ubuntu中运行view_nii不会显示菜单(缩放,Interp,…).我试着在三台不同的电脑上用ubuntu运行它。没有一个显示菜单。
你有什么解决办法吗?
多谢。

以利亚摇滚

和辛迪一样的问题。我试着在PMOD和freeview中打开文件,但原点/方向,或一些决定空间位置的参数似乎被改变了,但我没有改变标题。

我想在不改变空间方向的情况下修改图像值,那就太棒了。

我该怎么做呢?

Alize

乔的家伙

谢谢你的这些工具。事实证明,它们非常有用。然而,最近我发现load_nii模块已经停止工作。我重新下载了工具集,仍然有同样的问题。

当我输入load_nii('path/to/file')
我收到的错误是:
未定义函数'bitset'用于'char'类型的输入参数。

xform_nii>change_hdr中的错误(第465行)
hdr.dime。Xyzt_units = char(bitset(hdr.dime.xyzt_units,2,1));

xform_nii中的错误(第154行)
[hdr,东方]= change_hdr (hdr、宽容、preferredForm);

load_nii错误(第185行)
nii = xform_nii(nii,公差,preferredForm);

有什么调试想法吗?

辛迪

嗨……
谢谢你提供的工具包。实际上帮了我很多!
我只是发现了一个小问题,所以当我加载我的nii图像到这个工具箱,做一些编辑,然后保存它。
我发现图片有轻微的翻译(当我打开它在ITK Snap)。
我不确定是否有人也有同样的问题,有人知道我怎么解决这个问题吗?或者有什么建议能让我找回正确的方向?谢谢你!

塞缪尔·巴恩斯

一个小问题,我认为“容忍”选项的可靠性可以改进。当检查xform中的仿射矩阵时。如果你有高度各向异性的体素(在MRI中很常见,比如0.7x0.7x5.0),那么首先从矩阵中去除分辨率缩放会很有帮助,这使得做一个合理的“公差”计算来确定矩阵的方向变得非常困难。在这个例子中,第三列中的所有元素都是*5,所以即使对于几乎直的矩阵,col 3中的次要元素(n*5)也会比col 1和2中的主要元素(n*0.7)大。以下是我的修改建议(来自我的git补丁文件):
——/ niftitools / xform_nii.m
+ + + b / niftitools / xform_nii.m
@@ -324,13 +324,15 @@ function [hdr, orient] = change_hdr(hdr, tolerance, preferredForm)
hdr.hist.srow_y (4)
hdr.hist.srow_z (4)];

if det(R) == 0 | ~isequal(R(find(R)), sum(R)')
+ if det(R) == 0 || ~isequal(R(find(R)), sum(R)')
hdr.hist。old_affine = [[R;[0 0 0]] [T;1]];
- R_sort = sort(abs(R(:)));
- R(find(abs(R) <公差*min(R_sort(end-2:end)))) = 0;
+ resolution_matrix =诊断接头(hdr.dime.pixdim (2:4));
R_prime = R/resolution_matrix;
+ R_prime = R_prime。^ 2;
+ R(find(R_prime <公差))= 0;
hdr.hist。new_affine = [[R;[0 0 0]] [T;1]];

我还对矩阵的分量进行平方,这样所有列之和为1,所以您可以检查每个元素的绝对值,而不是元素<公差*最小值(第三大)

Matlab还想把你的OR运算符从"|"改成"||"。

sahil聊巴贾杰

嗨,吉米(以及本工具包的所有用户),

非常感谢这个很棒的工具包和所有的讨论!

关于从ROI中提取数据,我有一个问题:

我有T1映射在四维(X,Y,切片,时间)(.nii格式)和卷感兴趣的文件(.nii格式)。我想从T1图中提取时间活动曲线为这个特定的VOI,并想在MATLAB中绘制它。

view_nii的描述显示我们可以使用这个工具箱来做这个,但我不知道怎么做?

如果有人能帮我整理一下,我将非常感激!

谢谢,
Sahil聊

卡梅塔

这是一个伟大的工具!

我用Freesurfer创建了海马体场面具,我想在我的功能磁共振成像数据上使用它来获得子场体素。但是,我怎样才能知道子字段和fMRI数据是否在同一个空间中呢?是否有一种方法我可以使用view_nii来查看两个图像是否正确对齐?

谢谢你的任何帮助/建议。

布莱恩·科

我是否遗漏了一些东西,或者这里没有原始的DICOM到NIFTI转换功能…??
例如:
nii = D2N(“SRC_folder”、“full_path \ output_name”)

似乎有很多,但每个都使用不同的格式加载到matlab中。所以如果我使用不同的DICOM2NIFTI转换器比这些文件在这里不能正确地加载他们。我看到一个make_nii(),但实际上并不从dicom转换…还是我错过了什么?

谢谢你的宝贵时间。

机票费勒

你好,
请问是否可以知道NIFTI图像的像素值?因为我没有找到任何这样的函数。我想知道nii图像中特定像素的值。
谢谢你!

kb

Aditya Daryanani

我试图保存一个二进制3d nifti蒙版,但当我试图保存它时,我改变了变量nii.hdr.dime.bitpix和nii.hdr.dime.datatype为1。我能够保存这个NII,但除了Matlab之外没有外部程序能够读取它。我试着用ImageJ和ITK-SNAP打开它,但没有人能够阅读它。

汉克Jedema

谢谢你写了这么好的函数。我试图在模板MR图像上绘制一系列roi(每个roi的颜色反映了p值)。我得到了基本的工作,但我似乎无法翻转色彩图,以使较低的p值与更多的红色相关(使用默认的双极色彩图)。通常我会在颜色矩阵上使用flipud函数,但我似乎不能让它工作。如有任何建议,将不胜感激。非常感谢。

乔恩·克利里

Ioannis

Ioannis

你好。

我使用dicm2nii将四个DICOM系列转换为3D Nifti卷。我接下来需要做的是将四个3D Nifti卷连接到一个3D Nifti卷,为此我尝试使用了折线式nii_scan。我得到的结果是一个4D Nifti文件('multi_scan.nii')有四个“时间点”,而不是一个单独的3D卷包含所有的图像从最初的DICOM系列。任何关于这方面的想法都将非常感激!

问候,
Ioannis

Sherryse克鲁

我对这个工具箱(和MatLab)是全新的,我试图加载一个.nii文件。我在命令窗口中输入了以下内容:
>> topface = load_nii('/Users/MRIuser/fMRI/Homunculus2/P121/Experiment.feat/stats/zstat1.nii')

然后,命令行立即转换为:

> > uiopen(' /用户/ MRIuser / fMRI / Homunculus2 / P121 / Experiment.feat /统计/ zstat1.nii ', 1)

另外,在编辑器窗口中打开一个标签为zstat1的选项卡。Nii与许多随机字符。但是,没有创建名为“topface”的变量。有什么建议吗?

杰夫•布鲁克斯

当我将DICOM图像转换为Nifti格式时,每次运行/会话都有多个.nii文件。每张图片的大小也不一样。有人知道为什么会这样吗?哪张图像是进行分析的正确图像?

你好吉米,

我有一个关于方向性的问题。我看到FSL有一个函数(fslhd),读取报头并返回“qform_xorient”(“从左到右”或“从右到左”),但load_untouch_header_only没有。是“qform_xorient”在标题中还是从其他参数解释?

谢谢!

你好,
所以我检查了你的工具,在matlab中查看.nii.gz文件非常有帮助,但我如何使用它来保存我的文件为相同大小的。mat文件(256*256*50)。

谢谢,
Mayada

Janki梅塔

你好,

谢谢你的工具箱。我有以下问题:
我在MATLAB中有一个3D矩阵,我需要转换为NIfTI或ANALYZE格式,以便在SPM8中查看它。为此,我使用“NIfTI和ANALYZE image的工具”。我的问题是,一旦我使用make_ana命令将这个3D矩阵转换为ANALYZE格式,我得到的大脑体积是旋转/翻转的原始体积。
我该如何解决这个问题?
注意:与原始脑容量共同登记并没有帮助,结果仍然是翻转的。

谢谢,

Janki

Meytal

非常感谢这段非常有用的代码!

我在加载我的一些文件时遇到了一个问题。
我在FSL中准备了一个掩码文件,并想将它与一些函数文件一起加载到matlab中。
问题是仿射矩阵有我的两个主题的非正交旋转,所以我不能使用“load_nii”。
我不确定我是否可以使用“reslice_nii”,因为我仍然需要这个掩码文件具有与我的函数文件相同的尺寸。
任何想法都将非常感激!
谢谢,
Meytal

kb

杰里米·曼宁

难以置信的有用和写得很好的工具箱。多么了不起的服务!

非常感谢!!

纳拉

我看到了你的MATLAB代码加载和查看.nii文件。我目前正在研究自闭症患者的大脑绘图和大脑成像。我从comply数据库中得到了患者的mri图像。但我对MATLAB真的很陌生。我不明白这个代码是如何工作的。它说要用文件名替换文件名,我做了同样的事情。但我想它还需要更多的编辑,我才能使用它。你能帮我一下如何使用这个代码吗?

易隋

伟大的工作!
我稍微更新了一下,增加了一些新功能。
请检查
//www.tianjin-qmedu.com/matlabcentral/fileexchange/47072-3d-nifti-data-viewer

基督教

基督教

非常感谢这个有用的工具!

保罗Groot

嗨Sangeetha,

关于LAPACK加载错误:(dlopen:不能加载任何更多的静态TLS对象)

这是在matlab版本R2012b及更高版本的linux系统上已知的问题,并不是专门与这个工具箱相关:

http://www.mathworks.de/万博1manbetxsupport/bugreports/961964

似乎有了一个新的解决方案,但之前的建议是在startup.m.中添加以下行:

(10) *兰德(10);

这确保了相关的库在启动时被加载,这在我们的系统上起到了作用。

保罗

Sangeetha

你好,谢谢你的有益工作。当我尝试加载一个nii文件时,我得到下面复制的错误。可能是什么问题呢?

使用det错误
LAPACK加载错误:
Dlopen:不能加载任何对象
静态TLS

在xform_nii>的change_hdr(行
327)
如果det(R) == 0 |
~ isequal (R(找到(R))和(R)”)

xform_nii中的错误(第154行)
[hdr,东方]= change_hdr (hdr、宽容、preferredForm);

load_nii错误(第185行)
Nii = xform_nii(Nii,公差,
preferredForm);

Xen

嗨,恭喜你在这里的出色工作。
如果以前有人问过类似的问题,我很抱歉。我有16灰度片的堆栈在tif格式,并想将它们转换成nii格式。我该怎么做呢?谢谢。

吉米沈

你做不到。当需要load_untouch_nii或load_nii时,请检查faq.pdf

Israna

如何查看由“load_untouch_nii.m”加载的图像?

吉米沈

因为view_nii不负责解释和应用头信息。

Israna

谢谢,代码帮了大忙。

但是你能帮我理解为什么我不能使用"view_nii。M”来查看由“load_untouch_nii.m”加载的结构?我怎么看呢?

谢谢

克莱尔

对不起,我找到了,谢谢你的功能

路加福音谢

伟大的功能
谢谢你的更新

吉米沈

尼古拉斯,请告诉我到底是什么“线索”或“信息”让你困惑。另外,请告诉我你在做什么。

尼古拉斯•于

view_nii不太好用。
您给出的例子很好,但对于我的大数据来说,它提供了使用load_nii的线索。m当我使用load_untouch_nii。M,但要使用load_untouch_nii。当我使用load_nii.m时。为什么?

吉米沈

可以使用“load_untouch_nii / save_untouch_nii”对。举个例子:

nii = load_untouch_nii('avg152T1_LR_nifti.nii');
nii.hdr.his . description = '梦叶';
save_untouch_nii (nii new_avg152T1_LR_nifti.nii);

除非你碰了nii。Img,例如nii.img(1)=0,它不会被改变,尽管它也被加载和保存。只有头文件(nii.hdr)是按照您所做更改的方式编辑的。

此外,如果输入文件是Analyze 7.5格式,则输出将保持Analyze 7.5格式。如果输入为NIfTI格式,则输出将保持NIfTI格式。

这就是为什么我有“load_untouch_”以及“load_”功能。然而,在大多数情况下,你想使用“load_”功能,因为你不想解释在头部的仿射矩阵,并使各种各样的翻转和旋转自己,是吗?

mylyu

嗨,吉米

有没有加载、编辑和保存。hdr而不修改。img的方法?因为我发现SPM每次做co-registration都改变了我的源文件头,我想把它改回来。似乎save_nii_hdr()是一个内部函数,我尝试使用它,但破坏了我的nifti文件。

谢谢,
Mengye

NH

完美!谢谢你!

吉米沈

“plot”的数据只包含坐标信息,“make_nii”的数据需要强度值,假设强度值分布在坐标从1到网格维度的网格上。此外,与plot不同的是,图像的坐标只包含整数。因此,您不能直接从图中提取数据并将其转化为图像。

将您的绘图数据导出到图像将是一个简单的替代方案。我觉得你已经做得很好了。所有你要做的是隐藏背景图像和坐标轴,然后将情节导出到一个图像。下面是如何做到这一点:

1.导出前,用鼠标点击你的情节(使它活跃);

2.通过运行隐藏斧头:

集(gca,“可见”,“关闭”);

3.隐藏背景图像运行:

H = get(gca,'child');
i = 1:长度(h)
如果strcmpi (get (h (i),“类型”),“图像”)
集(h (i),“可见”,“关闭”);
结束
结束

4.将情节导出到图像中。现在它没有背景和轴。

NH

非常感谢您提供这个有用的产品。我确实有一个问题,如果有人能帮我…

我加载了一个.nii文件,做了一些处理,有了一个我想从中提取数据并最终保存为.nii的新图。这是一个简单的图,是寻找物体边界的结果。我从图中提取数据并将其输入到一个单元格中,但是“make_nii”函数不支持这种数据类型。万博1manbetx我尝试将单元格转换为.mat,但也没有产生令人满意的结果。我还尝试将情节保存为图像,然后使用“make_nii”,这是有效的,但结果包括图像的边界和轴。我只想要数据,不要背景和轴。有人有什么建议吗?

Orestis

Guilherme Coco Beltramini

吉米沈

“collapse_nii_scan”用于将多个单卷NIfTI或ANALYZE文件集成为一个多卷NIfTI文件。在您的情况下,如果您想将两个4D NIfTI图像连接到一个4D NIfTI图像,您应该应用“expand_nii_scan”到您的两个4D图像。所有卷必须在同一个文件夹中,并确保文件名正确重命名(即从001~999而不是1~999)。然后,应用“collapse_nii_scan”到所有这些扩展卷在特定的文件夹,你将得到一个连接4D NIfTI图像文件。

鲁道夫,

你好,我试图连接两个4D nifti图像使用折叠nii_scan,但这给我一个只有2卷的图像。我错过什么了吗?

埃德加·格瓦拉

保持低调Bilgic

吉米沈

嗨智:

“collapse_nii_scan。“M”就可以了。

嗨Samiy:

该工具不能用于提取脊髓。然而,一旦您提取它并保存到另一个Analyze/NIfTI文件中,该工具可以将数据加载到MATLAB中进行进一步处理。

在FSL中,有一个名为avwmerge的工具,它将多个hdr或nii文件绑定到单个hdr或nii文件中。一些现有的应用程序只使用单个hdr/nii文件作为输入。我能在你的工具箱里找到类似的功能吗?多谢。

吉米沈

收到的图像,它是一个特殊的RGB数据类型之一。nii。Img的范围通常是0到1,但输出值需要按(glmax-glmin)+glmin进行缩放。

吉米沈

你能把这个图片发给我吗?明天下午我可以帮你看一下。

肖颖唐

你好,
这个软件包非常适合我的研究。先谢谢。但现在向量图像有个问题。我想通过取它的绝对值来改变xyz向量图像的像素值。我首先使用:nii = load_nii(1_xyz.img),如果我使用view_nii(nii),我发现一切正确。移动准星到139,63,91,我可以读到的值是(-0.1784,0.8963,0.3663),这是正确的。但如果我使用:a = nii.img;A(139,63,91,1:3),它将显示值为0.35555,0.9434,0.6535。a的值似乎总是正的。我尝试使用nii = load_untouch_nii(1_xyz.img); a = nii.img; It has the same positive value.
对于nii值之间的不一致,你有什么建议吗?Img和view_nii(nii)显示的?
非常感谢。

肖颖唐

你好,

这个软件包非常适合我的研究。先谢谢。但现在向量图像有个问题。我想通过取它的绝对值来改变xyz向量图像的像素值。我首先使用:nii = load_nii(1_xyz.img),如果我使用view_nii(nii),我发现一切正确。移动准星到139,63,91,我可以读到的值是(-0.1784,0.8963,0.3663),这是正确的。但如果我使用:a = nii.img;A(139,63,91,1:3),它将显示值为0.35555,0.9434,0.6535。a的值似乎总是正的。我尝试使用nii = load_untouch_nii(1_xyz.img); a = nii.img; It has the same positive value.

对于nii值之间的不一致,你有什么建议吗?Img和view_nii(nii)显示的?

非常感谢。

马克

谢谢,这正是我想知道的!

吉米沈

确定标志。顺便说一下,你需要一个参考图像,这样你就可以看到在应用变换矩阵之前和之后会发生什么。下面是一个例子:

1.下载“avg152T1_RL_nifti。来自NIfTI网站。我用它作为参考图片。

2.查看参考图片的样子:nii=load_nii('avg152T1_RL_nifti.nii');
view_nii (nii);

3.假设我有一个变换矩阵,它会让参考图像在XY平面上逆时针旋转30度,下面是这个矩阵:T=[cos(/6) -sin(/6) 0;Sin (/6) cos(/6) 0;0 0 1];

4.从参考图片:rl=load_untouch_nii('avg152T1_RL_nifti.nii');
old_xyz = [rl.hdr.hist.srow_x (1:3); rl.hdr.hist.srow_y (1:3); rl.hdr.hist.srow_z (1:3)];

5.应用你的变换矩阵,并保存new_xyz到一个新的图像:rl.hdr.hist.srow_x (1:3) = new_xyz (1:);rl.hdr.hist.srow_y (1:3) = new_xyz (2:);rl.hdr.hist.srow_z (1:3) = new_xyz (3:);save_untouch_nii (rl rl30.nii);现在您已经有了“rl30”。nii”,这是一个转换后的NIfTI图像,可以在任何地方使用。

6.为了使用我的工具箱查看此图像,您需要重新剪切它:reslice_nii('rl30。nii”、“rl30b.nii”);现在,您可以加载并查看旋转后的图像:rl30b=load_nii('rl30b.nii');view_nii (rl30b);

希望这能回答你的问题。

马克

你好,

是否可以使用reslice_nii对nifti卷应用转换?例如,如果我有一个变换矩阵,它是一个函数与一个解剖体积的三维共配的结果,我可以使用reslice_nii将这个变换矩阵应用到函数体积上,将它转化为解剖空间吗?如果是这样,是否有机会提供一些示例代码?

非常感谢这些有用的代码。

Wannabegeek

吉米沈

回复你的第一个评论:问题是你把“make_nii”和“_untouch_”版本混淆了。如果使用"make_nii"来获取NIfTI结构,则必须使用"save_nii"来保存。

回复你的第二个评论:如果你很了解NIfTI结构,当然你可以修改它,然后使用“save_nii”来保存它。你甚至可以用“save_nii”将“非正交”的NIfTI结构保存到文件中。

我用“load_nii”解释头文件并将其限制为“正交”转换的原因都是为了方便,至少对我的工作是这样。

顺便说一下,如果你使用原始的NIfTI文件,并将其带到其他软件中显示(例如SPM),他们也会为你重新拼接它。

非常感谢您的评价!

Wannabegeek

我想我知道了。

我读了你的更新,意识到untouch选项不加载变换矩阵,所以通过添加一个我改变了标题。

我通过克隆头文件并使用save_nii()解决了这个问题。

如果你想知道为什么我没有使用load_nii(),它是b/c,y数据有非正交变换和开放的工具不会工作。

顺便说一下,我认为这种行为可能是不合理的。再切片的建议在我的实验室被认为是一个坏主意,b/c插值人工制品。

Wannabegeek

你好吉米,

我有一个问题使用save_untouch_nii()。

我加载一个nifti 4D数据集与load_untouch_nii(),不做任何更改,然后尝试保存与save_untouch_nii(),并获得一个失败的消息:用法:请使用'save_nii。M '表示修改后的结构。

我甚至尝试在保存之前克隆hdr。

Nii = load_untouch_nii('foo.nii');
Data = nii.img;
%data = data + 10;
Nii_mod = make_nii(data);
% nii_mod。HDR = nii.hdr;
save_untouch_nii (nii_mod test1.nii);

安德鲁•戴维斯

吉米沈

得到你的数据,并使用"analyze75read" "load_untouch_nii"和"load_nii"进行以下测试,结果如下:

a1 = analyze75read(“dxx.img”);
Max (a1(:)),得到3.3943e-08

a2 = load_untouch_nii(“dxx.img”);
Max (a2.img(:)),获取3.3943e-08

a1 = load_nii(“dxx.img”);
Max (a1.img(:)),得到3.3943e+04

检查:a2.hdr.dime.roi_scale
得到1.0000 e + 12

你告诉我你得到了一个体素值1.089e+12使用“analyze75read”。我无法复制你的结果。

迈克尔

嗨,吉米。我想我正确理解了你的工具,我确实使用了“load_nii”。我把数据发给你。

吉米沈

没有更多的细节,我无法重复你的问题。请把你的数据发给我。另一方面,我希望您可以看看我的网页,以更好地理解这个工具。为了显示,你必须使用"load_nii"而不是"load_untouch_nii"。也就是说,你的数据被正确地解释(接触)。可能有很多情况,例如缩放因子在头文件中指定,数据有不同的方向,等等。但是,在任何情况下它都不会区别对待双数据类型。

迈克尔

我的第一个帖子没有被提交。我说,该程序未能显示正确的值分析具有双重数据类型的文件。Matlab分析75read工作无问题。
你知道这是为什么吗?

迈克尔

PS:例如,这个程序将显示988.1而不是正确的体素值1.089e+12

吉米沈

我从来没有一个叫做“read_nii_img”的函数。请阅读所有的函数和用法:

http://www.rotman-baycrest.on.ca/~jimmy/NIfTI

杰西卡·伯纳德

我最近发现,现在我们已经升级到Matlab 2011a,很多这些函数不再正常工作。当使用read_nii_img时,我们现在得到一个错误说:

???未定义函数或方法'read_nii_img'用于'char'类型的输入参数

我们以前成功地运行过这些程序,但自从更新以来,它们就不能工作了。你对解决这个问题有什么建议吗?谢谢!

吉米沈

“apply_fsl_transformation_matrix”中的“load_nii_hdr”似乎已被修改。它应该看起来像这样“function [hdr, filetype, fileprefix, machine] = load_nii_hdr(fileprefix)”。例如,它应该有4个输出参数,这与“load_untouch_nii”所要求的数量完全相同。

迈克尔

你好,

使用'load_nii_hdr'在'load_untouch_nii'我得到以下错误消息:

???使用==> load_nii_hdr错误
输出参数太多。

==> load_untouch_nii at 103中的错误
[nii.hdr, nii.filetype nii.fileprefix nii。Machine] = load_nii_hdr(filename);

错误在==> apply_fsl_transformation_matrix at 5
vox = load_untouch_nii('/SCR2/DTI/det_track/BM3K/trans/Sem_fun_roi.nii');

谢谢你的帮助!

迈克尔

吉米沈

NIfTI两万博1manbetx者都支持”。Nii "和".img/。Hdr文件扩展名。如果不提供任何文件扩展名,它将查找“.img/”。“Hdr”文件。因此,您可以通过提供适当的文件扩展名来轻松解决问题。例如nii = load_nii('filtered_func_data.nii');

Galit

你好,
试图加载一个.nii文件,我得到一个消息:
找不到文件“filtered_func_data.hdr”
问题显然在于我们没有单独的头文件。除了将其转换为。hdr和。img之外,还有其他解决方案吗?
谢谢!

大卫·N

吉米沈

我假设您有一系列具有相同头信息的3D NIfTI(或Analyze)文件(即相同的尺寸、体素大小、发起者……)等等),你想把它集成到一个4D文件中,文件中有时间序列。

如果是这种情况,您可以使用我的“collapse_nii_scan”。M”这样做。键入help collapse_nii_scan以获取更多信息。

对于文件扩展名,这个函数将跟随您拥有的任何文件。也就是说,你仍然会得到一个。hdr/。Img文件。

由于所有NIfTI兼容的软件应该能够加载一个4D NIfTI(或分析)文件,我们不支持从.hdr/img到.nii文件的任何转换。万博1manbetx

Lirong谭

你好,

我想转换一系列的。hdr/。Img文件到一个单独的。nii文件。我怎样才能做到这一点呢?非常感谢。

吉米沈

您不应该使用“load_nii_hdr。”M”和“load_nii_img.m”。两者都是内部函数,在直接调用它们时不受支持。万博1manbetx

如果您想查看头部信息,请使用“load_untouch_header_only.m”。

如果您想更改体素值,请使用“load_nii”。加载NIfTI文件,然后使用“view_nii. m”。m”,编辑十字准星处的体素值(在“编辑”页签下),然后点击“文件”页签下的“保存显示图像”。

在您的案例中,不一致的原因是由于您自己没有正确解释标头中的缩放因子。

Priya


我正在使用工具NIfTI和分析图像。这真的很有帮助,我真诚的感谢为研究社区分享您的工作。

我使用。hdr和。img格式的图像。我试图将像素值1改为5,然后将其保存为。img。我使用函数view_nii查看保存的图像。我可以找到像素值为5,我做到了。但是如果我在MRIcroN和FSLVIEW等查看器中打开这些图像,它显示的像素值为0.01961。我找不到原因。你能帮我找到解决上述问题的方法吗?我可以看到输出图像的GMax是5。但对于输入图像它是0。
我把我用过的代码行写了出来。

我想发送我的输入文件,所以最好知道我的问题。请让我知道一种方式发送我的输入文件。

[nii1.hdr, nii1.filetype nii1.fileprefix nii1。machine] = load_nii_hdr('1sub_110_A-128_5med');
[nii1.img, nii1。Hdr] = load_nii_img(nii1.hdr,nii1.filetype,nii1.fileprefix,nii1.machine);
z =找到(nii1.img);索引的百分数——4610
img1 = 0(大小(nii1.img));
img1 = uint8 (img1);
img1 (z) = 5.00000;
nii1.img = img1;
save_nii (nii1 out1.img);

提前感谢你的帮助

吉米沈

这是因为这些参数和缩放已经被解释并应用到图像上。这是NIfTI装载机应该做的。

如果你想自己解释头文件,可以尝试以下命令:

X = load_untouch_nii('b0.hdr');
save_untouch_nii (x,“b0xx.nii”);

更多细节,请仔细阅读所有的说明,可以在我的网页上找到:

http://www.rotman-baycrest.on.ca/~jimmy/NIfTI

我尝试使用包中的两个函数将HDR图像转换为nifti图像
X = load_nii('b0.hdr');
save_nii (x,“b0xx.nii”);

然后比较了转换前后的Q偏移量、仿射参数和标定尺度。然而,它们几乎完全不同。是否有可能在不影响这些参数的情况下进行转换?

吉米沈

首先,当你使用'save_nii。m',你保存的文件将始终是NIfTI而不是Analyze格式。

第二,使用'load_untouch_nii'加载原始的Analyze文件和保存的NIfTI文件,并检查'的维度大小和数据类型是什么。img的领域。

最后,我测试了使用'load_nii。m `加载许多Analyze和NIfTI文件,然后使用` save_nii. m `。m'保存到NIfTI文件。我没有发现数据大小“显著增加”。如果可能的话,请将您的原始分析数据上传到我可以访问的地方,并将链接通过电子邮件发送给我(不要使用电子邮件附件),这样我就可以尝试复制您的问题。

对了,我要到8月2号才有空。

杨刘

亲爱的大家:

我在使用这个工具箱的过程中发现了以下问题。
我可以用'load_nii.m'在分析格式文件中获得数据。
但当我保存数据分析格式文件与'save_nii。M′没有任何变化,数据量显著增加。

泰勒

我下载了这个新程序,所以我现在得到了一个不同的错误,暗示了你刚才提到的。

然而,缩放不是一个选项,因为我们首先使用的是SPM来注册图像,所以我们需要NIFTIs在它们所在的当前空间中(我会努力将图像发送给您,但我不知道在这一点上是否有可能)。

吉米沈

首先,“load_nii”和“load_untouch_nii”都支持SPM NIfTI万博1manbetx映像。事实上,只有一个NIfTI标准,所有与NIfTI兼容的软件都应该遵守这个标准。

第二,为了复制错误,请将图片上传到任何我有读取权限的地方。请不要通过电子邮件附件发送。

正如您所注意到的,NIfTI图像可以具有任何空间方向,而“load_nii”只能具有48个正交方向。在这种情况下,程序将提示您使用“reslice_nii”来插入图像。由于您没有得到适当的提示,我有兴趣看看您正在加载的图像。

详情请浏览我的NIfTI网页:

http://www.rotman-baycrest.on.ca/~jimmy/NIfTI

泰勒

编辑:这里有错误

load_nii (pathTo.imgFile)
* * ? ?使用==> xform_nii>change_hdr在236错误
的数据不支持此NIFTI数据的转换万博1manbetx
项目* *。

错误在==> xform_nii在90
[hdr orient] = change_hdr(hdr);

在==> load_nii在71错误
Nii = xform_nii(Nii);

泰勒

沈先生,

总的来说,我在这个方案上取得了很好的成功;然而,在处理SPM NIFTIs (http://www.fil.ion.ucl.ac.uk/spm/我不能加载load_nii。

我必须使用load_untouch_nii,然而,当我使用它时,NIFTIs是随机的空间方向,图像矩阵需要翻转和/或旋转以处于正确的方向。

你知道怎么解决这个问题吗?它大大减慢了我的研究:/

谢谢!

泰勒

Navid Samavati

是的,现在你提到了,有时旧的分析格式被读为[0 0 0],这更有意义。我想这可能就是我的情况。

吉米沈

你读过:
http://nifti.nimh.nih.gov/nifti-1/documentation/nifti1fields如我所提到的?

如您所见,NIfTI中的“origin”是用sform或qform表示的。当你使用"load_nii"时,你应该在下面找到它:

有时,对于旧的ANALYZE映像,值是[0 0 0],这是没有意义的,那么您别无选择,只能使用:hdr.dime.dim(2:4)/2。

希望这能有所帮助。

Navid Samavati

感谢您的回复!

起始位置指的是原点(x,y,z)我在MATLAB的标题结构中找不到我的图像数据的原点。

吉米沈

x y z的起始位置都是1。例如XYZvoxal=[1 1 1]就是开始的地方。

请在以下地址检查NIfTI报头字段:
http://nifti.nimh.nih.gov/nifti-1/documentation/nifti1fields

请告诉我我是否正确理解了你的问题。

Navid Samavati

你好吉米,

我无法在标题结构的x、y和z方向上找到像素或体素的起始位置。我使用load_nii读取我的分析图像。图像很好。我只是找不到起始位置。

谢谢,
Navdi

吉米沈

举个例子:
Nii = load_nii('mydata.img',vol_id);
Slice = nii.img(:,:,切片id);
片=圆(63 * (slice-min(切片(:)))/ max(切片(:)))+ 1;
imwrite(片、飞机、“myslice.jpg”);

Whemberton

嗨,吉米。真的,这是一个非常好的代码。

我有一个问题。如何提取4D nifti脑容量的单个切片,并将其保存到一个常规的图像文件(即:jpeg, bmp…),使用一个通用的颜色映射(即:ge_color)??

谢谢大家的关注。

W。

维克多Alchanatis

吉米沈

您可能没有注意到“load_nii”中的容差参数。默认情况下,我们不允许超过10%的失真。你可以将其设置为0,你会被提示使用“reslice_nii”来插值图像。

如果您只想将负值和NAN值更改为0,您可以简单地使用“load_untouch_nii”和“save_untouch_nii”对来完成这项工作。

肖颖唐

你好吉米,

我有一些问题。我的目标是将图像中的负值和NAN值更改为0,然后将其保存为.nii。我使用load_nii程序,然后将该值更改为0,然后使用save_nii程序。一切似乎都很好。但我最终发现图像的FOV有一点变化:Field of VIew-Width: 204;视场高度:256;切片厚度:1至视场宽度:203.992;视场高度:255.909;切片厚度:0.99968。但图像尺寸保持不变。你明白我的意思吗? I mean the voxel size changed. Could you please have a look at this problem? It is very strange.

非常感谢。
小颖

肖颖唐

你好吉米,

我有一些问题。我的目标是将图像中的负值和NAN值更改为0,然后将其保存为.nii。我使用load_nii程序,然后将该值更改为0,然后使用save_nii程序。一切似乎都很好。但我最终发现图像的FOV有一点变化:Field of VIew-Width: 204;视场高度:256;切片厚度:1至视场宽度:203.992;视场高度:255.909;切片厚度:0.99968。但图像尺寸保持不变。你明白我的意思吗? I mean the voxel size changed. Could you please have a look at this problem? It is very strange.

非常感谢。
小颖

肖颖唐

吉米,

我解决了这个问题。非常感谢。

最好的
小颖

吉米沈

首先,你不必使用"make_nii",它只是基于你的N-D矩阵为你创建一个NIfTI结构。

第二,make_nii支持浮点数据万博1manbetx。键入help make_nii了解更多详细信息。你收到错误信息了吗?

肖颖唐

你好吉米,

非常感谢你的剧本。它们真的很有用。

现在我想读取一些nii文件,并设置像素值为0以下。我首先加载nii文件,然后更改值。现在我需要把它保存回nii文件。我想我应该先make_nii,然后save_nii。但是make_nii似乎不支持浮点数据类型。万博1manbetx你有什么好的建议吗?

最好的
小颖

吉米沈

胡安:你好

你可以在下面的“关于覆盖的问题”分类中查看:
http://www.rotman-baycrest.on.ca/~jimmy/NIfTI/FAQ.htm
在这个话题中有几个问题和答案。

你说你有每个体素的x,y和z方向。x、y和z方向必须转换为关于第一个体素的索引。也许,你已经有了代表特征图像的大脑区域。让我们假设你有一个名为“brain_mask”的二进制图像。而解剖图像则称为“ana.nii”。以下是你可以尝试的方法:

1.使用"ana = load_nii(ana.nii)"加载解剖图像,并确保变量"ana. nii . "“Img”要么是“single”,要么是“double”。如果不是,使用步骤2转换它。

2.转换变量“ana。”Img”到“single”时,需要使用“make_nii”命令:“ana = make_nii(single(ana. Img), ana.hdr.dim .pixdim(2:4), ana.hdr. history .originator(1:3))”。

3.使用"mask = load_nii(brain_mask.nii)"加载大脑
掩码图像,并为“opt”结构体赋值和索引:Idx = find(mask.img);Opt.setvalue.val =特征向量;"。你可以通过命令"help view_nii"查看更多使用"setvalue"的细节。

4.为"opt"结构体添加其他值:"opt.command = 'init';Opt.useinterp = 0;"。

5.使用命令“view_nii(ana, opt);”绘制带有底层背景的特征图像。

6.不要点击“interp on/off”菜单。它不能正常工作。如果你想看到插值的一个,使用:"opt.useinterp = 1;View_nii (ana, opt);

如果你还有什么问题,请随时问我。

吉米

胡安

嗨,吉米。
非常感谢你给我这个非常有用的工具箱。
我的问题是关于如何在图像中覆盖。我需要在图像上覆盖每个体素的主特征向量;我已经在matlab数组中有了每个体素的x,y和z方向,但我想知道如何在相同的图像上显示,或者是否可以修改您的代码,只保留主图像,去掉您提供的所有选项,如颜色和十字线的位置等,因为我主要需要显示图像,并在其上显示特征向量。
谢谢,
胡安

吉米沈

嗨Preeti:

1)是的,它不支持。avw格式。万博1manbetx所以请保存到。hdr/。img或。nii格式,然后在MATLAB中打开它们。

2)在许多新电脑上,300片应该没问题。如果您的计算机的内存中不能存储这么多数据,您可能需要一次取1或多个片进行分析。该功能于2010年1月6日实现。

Preeti

我正在使用AnalyzeDirect软件进行肺癌检测和检索。我已经从300多片的胸部CT扫描(DICOM)中分割出肺部。我把结果保存在。avw格式以及Analyze7.5格式。现在,当我试图在MATLAB中打开这些文件时,我遇到了这些问题

1)代码只支持'hdr/。img的格式,即Analyze7.5格式。我无法加载。avw文件
2)没有。当我打开'.hdr/ '时,它会给出'内存不足'错误。img的数据。

如何解决这两个问题。请帮助!

吉米沈

嗨Anne-Lene:

别担心。下面的建议会给你更多的帮助。

如果在使用“expend_nii_scan”后没有看到差异,这意味着您的文件中只有一次扫描(1卷)。既然你说“…”分开看nifti图片…”,我以为你在一个文件中有几张图片(卷或扫描),我想分开处理它们。

你需要做的第一步是通过“load_nii”命令将你的图像加载到MATLAB中(在使用它之前请查看“help load_nii”)。

假设您有一个图像“file1”。Nii”(或“file1.img/hdr”)。命令:
Nii = load_nii('file1.nii');

Nii = load_nii('file1.img');
你可以在“nii”中得到一个3D矩阵。和它的头信息在“nii.hdr”中。

您提到您希望将图像更改为另一种数据类型。方法如下:

你可以直接更改标头信息(如果你熟悉NIfTI标头),然后使用"save_nii",或者使用"make_nii"创建一个新的NIfTI结构(如nii)。

例如:
数据类型= 16;%更改数据类型为float32
Nii2 = make_nii(nii。Img, nii.hdr.dime.pixdim(2:4), nii.hdr. history .originator(1:3),数据类型);
save_nii (nii2 file2.nii);或使用nii ext
save_nii (nii2 file2.img);%或使用img/hdr ext
通过这样做,您将其更改为Float32数据类型,并将其保存到“file2”中。Nii”(或“file2.img/hdr”)。

如果你有一个你自己做的MATLAB算法,我想你会对img矩阵(“nii.img”)更感兴趣。“nii。Hdr”是描述如何“nii. Hdr”的头信息。Img是面向的,体素大小是什么,发起者是什么,等等。

最后,我必须纠正您,“make_nii”不会将图像转换为任何扩展。它只使用N-D矩阵和一些其他参数(体素大小、发起者、数据类型等)来构造NIfTI结构。请仔细检查帮助,并确保您知道如何使用它。

如果你还有什么问题,请说得更具体一些(例如列出要点),这样我才知道如何帮助你。

吉米

Anne-Lene

我已经看了那些链接,并尝试了expand_nii_scan,恐怕我还是不明白。我的文件有nii扩展名,当我使用expand时,我得到了另一个nii文件,当我使用view_nii时,我看不出这和我的原始文件有什么区别。

我看到使用make_nii我可以转换图像与img/hdr扩展名,但我不能让它工作在我的文件与nii扩展名。

Anne-Lene

吉米沈

嗨Anne-Lene:

没有问题是愚蠢的。

是的。您可以使用我的工具单独查看NIfTI图像,也可以将它们转换为另一种数据类型。

因为NIfTI同时支持i万博1manbetxmg/hdr和nii扩展,所以我的工具支持它们中的任何一个。

大多数帮助可以通过使用help命令获得。例如help make_nii。

还有一些其他的资源可以帮助你:
http://www.rotman-baycrest.on.ca/~jimmy/NIfTI
http://www.rotman-baycrest.on.ca/~jimmy/NIfTI/FAQ.htm
http://www.rotman-baycrest.on.ca/~jimmy/NIfTI/examples.txt

expand_nii_scan命令用于将一个多扫描的NIfTI文件分解为多个单扫描的NIfTI文件,以便分别查看。

如果需要转换img数据类型,可以在使用make_nii命令后使用“save_nii”命令。如果您熟悉NIfTI结构,您可以修改“hdr。直接“Dime”,然后使用“save_nii”进行保存。

如果你还有什么问题,请说得更具体一些,我好帮助你。

吉米

Anne-Lene

这就跟你问声好!

我是一个使用nifti的初学者,所以这可能看起来像一个愚蠢的问题,但我希望你能帮助我。

我使用fsl前奏来打开我的mri图像,现在它们是nifti格式的。我现在需要比较这些图像和我用我自己做的matlab算法解压的图像。

我可以使用你的工具看nifti图像分开,也许把他们转换为另一个数据类型,我可以在matlab中使用?

我认为也许你的提示在帮助save_nii可以帮助我,但我不知道如何使用它,我需要img/hdr文件而不是nii?

我将非常感激你的指导。

Anne-Lene

吉米沈

你好大卫:

我刚刚有机会调查这个问题。

因为修改“load_nii.”太复杂了。我修改了“load_untouch_nii. m”来加载NIfTI和Analyze格式的特定切片。m”。这意味着,您将根据其头部信息来处理图像的朝向,因为“load_untouch_nii.”m”不会对HDR中指出的IMG矩阵应用任何更改。

我希望这仍然能以某种方式帮助你加载大型数据集。

吉米

大卫

这是一个非常棒和非常有用的软件。

我只是想知道是否有任何方法来加载一个或多个特定的片从analyze和nifti格式?我知道从nii中选择所需的片是很简单的。img加载后,但我想避免与完整的4D, 5D,tsc加载的内存使用。

谢谢你分享这份工作,吉米

吉米沈

你好迈克尔:

首先,我想知道如何简单地将.img文件重命名为.nii文件。NIfTI支万博1manbetx持这两种扩展名,但是对于。img扩展名,您需要将头部单独保存在。hdr文件中。所以人们不可能只是“……如你所说,将。img文件重命名为。nii文件。”

其次,我查看了Francesca的数据,图像数据的大小与标题中显示的大小不匹配。对于这样一个文件,我无法想象有任何软件可以处理它。

我很高兴看一下你们的样品。你能把它们上传到你的服务器上,并把链接贴在这里吗?

谢谢,
吉米

迈克尔Zeineh

嗨,弗朗西斯卡和吉米,

有趣,我在使用MRIcro时也遇到过同样的问题。我找到了一个变通办法。如果使用mrmicroro将roi保存为单独的分析报头(而不是嵌入的报头),那么它将使用mrmicroro打开。但是,吉米的工具还是打不开。但是,如果您将.img文件重命名为.nii,那么Jimmy的两个工具都将加载它。

吉米,如果你需要,我很乐意给你发一些有限的图片样本。

迈克尔

吉米沈

小薇:你好

谢谢您的报价。

当您使用“load_untouch_nii.”M”,它只是加载img和hdr,但不应用任何变化(如scl_slope,仿射矩阵等)在头文件中显示。因此,我总是建议人们使用“load_nii”。在大多数情况下是M。请检查“load_untouch_nii.”的描述。M”&“load_nii.”米”http://www.rotman-baycrest.on.ca/~jimmy/NIfTI

您是对的,意外值是由“scl_slope”参数引起的,该参数在使用“load_nii.m”时被正确应用。然而,我不确定你是否注意到这是一张放射图像,即右在LHS,左在RHS。在这里,L/RHS表示左/右。

当您使用“load_nii.”m”,它将根据头部中的仿射矩阵做所有适当的翻转和旋转,img将始终处于RAS方向(即x: L->R, y: P->A, z: I->S)。在您的特定情况下,不应该使用[32 32 23],而应该使用[33 32 23],因为x轴是翻转的,即new_x = max_x(64) - old_x(32) + 1 = 33。

其他软件可能会选择在轴向/矢状/冠状视图周围进行适当的标记,例如FSL就是这样做的。

如果您还有什么问题,请随时告诉我。

吉米

弗朗西斯卡

你好吉米,

你是对的,我试过用mrmicro打开。nii文件,出现了关于预期头尺寸的错误。错误的步骤可能是当我试图导出。roi到。nii,但实际上没有其他方法做它与mrmicroo。我会想别的办法的!

非常感谢您的帮助,再次感谢您的nifti工具!

弗朗西斯卡

刘魏

好的,我想我找到了缩放的参数:它们是hdr.dime。Scl_slope和hdr.dime.scl_inter。现在我知道了这些包是如何工作的,如果我愿意,我可以自己缩放体素强度。很抱歉我的问题很草率,谢谢这个好工具!魏

刘魏

你好吉米,

当阅读nifti文件时,我发现体素灰度值与其他工具不同。我所做的是:
- 'untouch load'文件:fmri_mean = load_untouch_nii(…/meanfM00223_004');
-打印mri_mean.img(32,32,23)的体素值。取值为9506。
-但是当我用fslview打开相同的文件时,我发现相同的体素有不同的值。其他体素也不一样。附加了fslview快照。因为在fslview中体素坐标从0开始到dim-1,所以同一体素在fslview中的坐标为[31 31 22]。

-使用itk的“Imageviewer”,发现体素值与fslview相同。还附上快照。相同的fslview坐标为[31 31 22]对于相同的体素。

-使用FSL工具'fslhd'检查nifti文件的头部:
数据类型4
nbyper 2
bitpix 16

这意味着它是int16。

-在matlab中检查fmri_mean结构,发现数据类型为4:
数据类型:4
bitpix: 16

但是为什么你的nifti工具与其他包给出不同的灰度值?我把所有的快照和nifti文件放在www.sci.utah.edu/ weiliu / q01 /供您参考。

顺便说一下,这是一个很好的工具。谢谢!

费利佩·萨利纳斯

对不起,没有尽早评价这个....

吉米沈

弗兰西斯卡:你好

首先,非常感谢你的评价,我真的很感激。

看起来lCC_19850624TRTN_2x2x2_b1000_a_fa。Nii’”是腐败的。你试过在磁共振下成功打开吗?如果有,请上传这个文件,让我看一下。

另外,从您发布的错误信息来看,您使用的是我的工具的一个非常老的版本。我通过显示错误的行号注意到这一点。但是,我仍然认为错误是由于图像损坏造成的。

请让我知道,
吉米

弗朗西斯卡

亲爱的吉米,

我只是一个“nifti成像世界”的初学者,但我已经做了足够的理解,您已经做了一个非常伟大和聪明的工作!谢谢!

嗯,我在加载。nii文件时有问题。(通过mrmicro导出。roi文件获得)。我将发布的错误,我得到:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

> > ROI = load_nii(“lCC_19850624TRTN_2x2x2_b1000_a_fa.nii”);
???使用==>重塑错误
重塑元素的数量必须不变。

==> load_nii_img>read_image at 266错误
Img =挤压(重塑(Img, [hdr.dime.dim(2:4) length(img_idx)]));

在==> load_nii_img在62错误
[img,hdr] = read_image(hdr,filetype,fileprefix,machine,img_idx,old_RGB);

==> load_nii at 66错误
[nii.img, nii。=…

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

你能帮我吗?

非常感谢,祝一切顺利!

弗朗西斯卡

吉米沈

嗨,亚历克斯:

理论上,有了header信息,除了扫描折叠/展开外,还可以进行切片折叠/展开。目前我还没有找到这样的工具,以后可能会考虑你的建议。

谢谢你的反馈。
吉米

吉米沈

嗨Wen-Tung:

问题可能出在ImageJ使用的模块中。我试了MRIcron,得到了和你描述的一样的结果。例如,当hdr.dime。数据类型=32 & hdr.dime。Bitpix =64,不支持。万博1manbetx当hdr.dime。数据类型=64 & hdr.dime。Bitpix =128,可以。

为了确定ANALYZE格式应该支持什么数据类型,我反复检查了ANALYZE文档:万博1manbetx
http://eeg.sourceforge.net/ANALYZE75.pdf
它说,分析格式应该只支持32/64,而不是64/128。万博1manbetx

我还尝试了其他流行的软件,如AFNI。结果是AFNI支持32/64。万博1manbetx当我尝试64/128,它抱怨“不支持的分析数据类型=64”,这是正确的。万博1manbetx

因此,如果必须使用datype =32复合体,则必须找到要使用的正确软件。AFNI是我刚刚测试的其中一个。

万事如意!
吉米

亚历克斯

亲爱的吉米,

我想用一台内存相对较小的计算机创建大的NIfTI文件。我似乎可以通过一次处理几个片,然后使用崩溃处理nii_scan重新处理来实现这一点。这似乎有点笨拙,我猜它也会相信倒塌的部分是一个时间序列,而不是拼接在一起一个大体积?是否有一个工具流切片到一个NIfTI文件,假设我可以提供一些头信息从开始?

谢谢,
亚历克斯。

Wen-Tung王

谢谢你的留言,吉米。
首先,很抱歉我在之前的帖子中没有写得更清楚。ImageJ是NIH (http://rsbweb.nih.gov/ij/index.html),在医学影像界拥有众多用户。ImageJ有一个插件(http://rsbweb.nih.gov/ij/plugins/index.html),可以打开/保存在分析格式的图像。我试图保存一个MRI图像,经过一些处理使用Matlab脚本,在分析格式和使用ImageJ查看它。
我试了你的例子,效果很好。但是,我仍然不清楚为什么ImageJ不能读取输出文件。使用datatype=64, ImageJ可以读取文件,但这不是正确的数据类型,并且在整个图像中存在正弦调制。
谢谢你!
Wen-Tung

吉米沈

嗨Wen-Tung:

首先,感谢您的评价。

你的脚本是正确的,但我没有得到任何错误消息。你说“……试着看试卷。img使用ImageJ,…是打印错误吗?

下面是我测试的一个例子,你可以复制这个过程:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
img1 =兰德(3)
img2 =兰德(3)
myMat =复杂(img1 img2)
数据类型= 32;
ana = make_ana(myMat,[],[],数据类型);
save_untouch_nii (ana, C: \ \测试数据);
安娜= load_untouch_nii (C: \ \测试数据)
nii = load_nii (C: \ \测试数据)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

您在测试上述脚本时是否收到错误消息?

吉米

Wen-Tung王

嗨,吉米:
我试图保存一个复杂的2D矩阵(MRI图像)在分析格式使用你的脚本:
数据类型= 32;
ana = make_ans(myMat,[],[],数据类型);
save_untouch_nii (ana, C: \ \测试数据);
当你试着读试卷的时候。img使用ImageJ,它给出错误消息“数据类型32不支持”。万博1manbetx
是因为我没有正确使用脚本吗?
谢谢你!
Wen-Tung

吉米沈

你好,玛尔塔:

你是如何创建NIfTI文件的?下面是一个可复制的例子:

nii = make_nii兰德(91109、91)* (255);
max (nii.img (:))
save_nii (nii mynifti.nii)

如您所见,体素的最高值从未设置为1,您可以打开“mynifti”。nii'与任何NIfTI兼容的工具。

有什么问题尽管问。

吉米

M Var

嗨。

程序很棒,但我似乎有一个问题,用这个程序创建NIFTI文件。创建的NIFTI文件通常是完全空白的,只有最高像素值设置为1。这可以通过改变inout矩阵的比例(即将所有值乘以100)进行排序,但当我不知道这个错误背后的机制时,很难确定对所有图像的正确比例。

你有什么能帮上忙的主意吗?

非常感谢,
玛尔塔

吉米沈

嗨Prateep:

当你加载一个图像文件时,例如:
Nii = load_nii(' yourrim . Nii ')

Nii.hdr.dime.pixdim(2:4)将是体素的宽度、高度和深度。

如果使用view_nii(nii)查看,点击菜单“view”,然后点击“Image Information”,“体素大小”就是体素的宽度、高度和深度。

由于analysis和NIfTI图像对于图像中的所有体素都应该具有相同的体素大小,因此最大值和最小值应该相同。

体素中到原点的距离可以通过减去原点处的值和准线处的值来获得。对于以毫米为单位的距离,由于“[XYZ]在原点”的值是[0 0 0],您可以只读取“[XYZ]在准星”的值。

请随意提问,

吉米

prateep穆克吉

你好吉米,

我们如何用你的工具在一个3d .nii图像中找到最大和最小的深度,宽度和高度,假设图像是在RAS方向?

另外,用这个工具,我们能求出像素到原点的距离吗?请在这方面给点提示。

我现在使用的图像是“avg152T1_RL_nifti”。“avg152T1_LR_nifti”和“avg152T1_LR_nifti. nii”。nii”http://nifti.nimh.nih.gov/nifti-1/data

谢谢,
Prateep。

吉米沈

嗨,克里斯:

谢谢你的反馈。我已经解决了这个问题。相反,如果使用nii.img=double(nii.img);我只制作了显示的三张2D图像的两倍。如果原来的类型是uint8,我将保持原样。

再次感谢您的反馈。我刚刚上传了新程序,你下周可以在这里看到。

吉米

吉米沈

嗨Pieter:

这是因为你利用了我默认的“公差”,允许10%的失真。你可以用我的“reslice”。程序,并指定你想要的体素大小。

Jiimmy

Pieter Vandemaele

你好吉米,

你可以忽略我之前的问题,我确实读了你们网站上的常见问题…
我希望你有时间更新/扩展这个程序,它非常有用。

Pieter

Pieter Vandemaele

你好吉米,

我在使用你的好工具的标题时遇到了一些问题。

当我使用load_nii_hdr加载一个4-D nifti文件头,并将其与使用load_nii的.hdr字段的头进行比较时,我得到了不同的pixdim值:
load_nii_hdr:

Nifti_hdr = load_nii_hdr('nifti_file');
Nifti_image = load_nii('nifti_file');

nifti_hdr.dime。Pixdim is [1 4.5313 4.5313 4.5000 200 1 1 1]
nifti_image.hdr.dime。Pixdim是[1 4.5212 4.5312 4.4900 200 1 1 1]

像素阵列的差值为[0 0.01 0 0.01 0 0 0 0]

是我发现了窃听器还是我脑袋里有窃听器?

Pieter

克里斯那首

嗨,吉米

view_nii在使用单一格式的数据时似乎有一个问题。当我切换到“interp off”并单击其中一个面板来移动十字线时,其他面板是空白的,我在我的matlab提示中看到“警告:CData必须是double或uint8..”。我可以通过以下方法来解决这个问题:

nii.img =双(nii.img);

到目前为止没有其他问题,非常感谢这个不错的软件!

克丽丝

克里斯那首

嗨,吉米

我有一个关于执照的问题。matlab前端说这是BSD许可证,你的许可证.txt也是。然而,一些文件(包括load_nii。M和save_nii.m)包含这些行

此文件的一部分是在GNU许可下复制和修改的
MRI_TOOLBOX由澳大利亚弗林德斯大学的CNSP开发

在我看来,这些文件也应该在GNU许可下发布。你能解释一下吗?抱歉给您添麻烦了。

克丽丝

吉米沈

嗨,麦迪:

是的,用我的工具很容易做到。以下是步骤:

1.加载nii文件;
2.找到一个未使用的强度级别。如果没有,添加另一个级别;
3.求圆和圆在连续切片中的索引;
4.用你在步骤2中选择的值标记它们;
5.创建一个色彩图文件;
6.用圆圈观察大脑;

如果您在创建圆时仍有问题,请将2nii文件上传到ftp服务器。第一个nii文件应该是原始卷,第二个nii文件应该是初始圆。也请告诉我你想要画的圆的确切切片,你想画什么颜色的圆。然后我会回复你修改后的nii包含圆。

吉米

曼迪

你好吉米,

这是一件了不起的工作,而且非常有用!我很想知道我是否可以将它用于我的具体情况。

我们在头骨中插入的杆状观察室在一些核磁共振成像的初始切片中显示为圆形。我想做的是把这个圆的确切轮廓投射到其他几片更深的切片上,这样就可以找到它,在连续的切片中,房间的投影就在那里。因此,如果杆状室被进一步插入,也可以找到被包围的区域。简单地说,它就像在每个连续的切片上叠加一个指定直径和位置的圆。

我尝试使用view_nii函数和保存为.jpeg/.fig格式的圆,给出图句柄和nii,并使用视图函数的帮助部分中的描述。但是我在图形属性上遇到了麻烦,特别是函数“set”。从程序中第291行的“菜单栏”开始,我几乎在每个图形属性中都遇到了错误。我是matlab的初学者。其实我很惊讶我能使用其他函数,这就是为什么我说你的文件是如此的友好。我很乐意知道我该如何着手做这件事。

总而言之,我想知道的是,是否有一种方法可以将圆(给定其半径和在这些坐标中的位置)绘制到连续的切片上。

吉米沈

你好,妮可:

以下是AC Origin的定义:
http://en.wikipedia.org/wiki/Anterior_commissure

为了使用'make_nii。m',你已经有了一个3D矩阵,你只能通过眼睛判断AC原点,而不能进行任何转换。

因为'make_nii. '生成的数据。m'为RAS方向,负z坐标向下,即z坐标从Superior到Superior。

吉米

妮可

你好吉米,

我很抱歉重复我的问题,但是AC origin的条目我还是不清楚,主要是因为我不知道“AC origin”是什么意思。

现在我知道体素正在被计数(而不是位置单位为mm)。现在,我们讨论的原点是与大脑中切片板的x, y, z偏移有关(即扫描时定位切片时的偏移),还是与切片板本身的原点有关?我认为是前者。

如果是前者,那么我不确定为什么它必须相对于img(1,1,1),而不是平板的整体偏移量。我在读出中有以mm为单位的偏移量,相位编码和切片方向。我能把这些值转换成体素的数量吗?

最后,z坐标是负向上,还是负向下?(例如,较高级的切片比较低级的切片具有更大的负z坐标)

作为旁注,我只使用make_nii和save_nii来分析FSL中的数据。

希望这次我把我的困惑弄清楚了。谢谢你的帮助,

妮可

吉米沈

你好,妮可:

第一:'make_nii '中的'origin'参数。M '为体素,相对于'img'参数的第一个体素,即img(1,1,1);

第二:如果我用一个例子来解释,就会清楚得多:

img = 125:249;img =重塑(img [5, 5, 5]);
nii = make_nii (img, (1, 1, 1), [3, 3, 2]);
view_nii (nii);

是的,我们知道AC原点的单位是[0 0 0]毫米。但是,您必须告诉NIfTI数据您的[0 0 0]毫米在哪里,这样其他人在打开您的NIfTI数据时也可以知道它。因此,参数“origin”只能用体素表示,以定位你的3D矩阵的确切位置作为AC原点。

吉米

妮可

你好吉米,

你的代码对我非常有用;我一直在使用make_nii和save_nii。我的问题是关于make_nii的AC来源。首先,我假设坐标应该以毫米为单位,就像体素大小一样。然后,我想知道AC原点是否指的是中心切片的位置。如果是这样,对于第三个坐标(指轴向切片),负的(如-20)是否表示向上平移(即更上的切片)?这是我习惯的约定,但我不确定它是否也适用于make_nii。

谢谢!

妮可

西蒙•罗宾逊

这些都是阅读和编写NIfTI的好工具——我所有程序的核心部分,得到了很好的支持。万博1manbetx谢谢。

西蒙•罗宾逊

玛丽安娜Jakab

请去掉下面链接的“:”,它会把你带到一个无效的页面。

NIfTI网站提供了两个示例数据集http://nifti.nimh.nih.gov/nifti-1/data:“avg152T1_LR_nifti。“avg152T1_RL_nifti.nii”和“avg152T1_RL_nifti.nii”。
http://nifti.nimh.nih.gov/nifti-1/data是一个非常好的和信息丰富的页面。
谢谢。

所以如果

mmei rezk

Stefan Haufe说道

艾瑟夫巴德RMATHALBazon

经过粗略的检查,这似乎是一个伟大的工具。

马克粗体

我经常用这个。我的岩石。

吉米沈

斯特拉,

以下是答案:

1.nii_002.original.hdr.hist。或iginator" is [256 0 0 0 0], because "t1_icbm_normal_1mm_pn0_rf0" is in Analyze 7.5 format and "001" is in NIfTI format that does not have obvious "originator" field. please let me know if you are still not clear.

2.“nii_01.hdr.dime。“Xyzt_units”只是一个信息字段。当它是1时,xyz以“米”为单位;当它是2时,xyz以“毫米”为单位;当它是3时,xyz以“微米”为单位;当它为0时,xyz单位是未知的,只能由作者解释。我不知道为什么这个领域对你有帮助,不知道这是不是正确的方法。

3.很奇怪,你把“nii_002.hdr. history .originator”写成了“[-2 -2 -2 00]”。我需要同时查看“t1_icbm_normal_1mm_pn0_rf0”。Img /hdr“&”001。Img /hdr”,以进一步回答这个问题。你能把它们上传到你的FTP网站并把链接发给我吗?

斯特拉郑

1.我已经手动设置nii_01.hdr.dime.xyzt_units=2;它现在可以通过freesurfer转换。谢谢!
2.其他问题可能是由于原始的Analyze图像是用大端序创建的,而这个工具箱用小端序写入新的Analyze文件。我不知道该怎么解决。

斯特拉郑

对不起。

2.在nii_002中,Originator在nii_002.original.hdr中。嗨st is [256 0 0 0 0], while it is [-2 -2 -2 0 0] in nii_002.hdr.hist.

斯特拉郑

亲爱的大家:

在使用这个工具箱时,我发现了以下问题。
数据:t1_icbm_normal_1mm_pn0_rf0。rawb从brainweb下载,然后转换为Analyze格式(t1_icbm_normal_1mm_pn0_rf0. txt)。Img和t1_icbm_normal_1mm_pn0_rf0. Img和t1_icbm_normal_1mm_pn0_rf0. Img。HDR)(不带*.mat)。

应用以下程序:

Nii_001 = load_nii('t1_icbm_normal_1mm_pn0_rf0', [], 1)
save_nii (nii_001, ' 001 ', 1);
Nii_002 = load_nii('001', [], 1)

预期头信息应该是相同的,但有以下区别:

1.nii_001.original.hdr中的Originator。Hist与nii.hdr.hist中的[0 0 0 0]相同。

2.在nii_002中,Originator在nii_001.original.hdr中。嗨st is [256 0 0 0 0], while it is [-2 -2 -2 0 0] in nii_001.hdr.hist.

3.t1_icbm_normal_1mm_pn0_rf0的起源。img在mrmicro上显示为[0 00],原点001。img在mri上显示为[2 2 2]

4.在nii_001.hdr中Rot_orient =[],flip_orient=[]。hdr和nii_002.hdr。嗨st, but not in their origianl header.

5.当001年。Img转换为*。在FreeSurfer中,错误信息如下所示

mri_convert。/源自/ 001。img /源自/ 001. mgz
Reading from ./ trans /001.img…
INFO:作为两个文件NIFTI读取
nifti1Read():未知空间单元0 in ./ trans /001.hdr

如果有人能帮忙解决这个问题,我非常感谢你的帮助。

最好的问候,
斯特拉,

南洋理工大学计算机科学与工程学院
新加坡,

斯特拉郑

我用过的分析图像读写的最好的工具。感谢楼主的贡献和分享。

Ning曹

(可能的)错误报告:

一个很好的工具箱,用于加载,保存和查看分析MR图像。谢谢你不时地改进它。

我只是想报告20070426版本中一个可能的错误。

当使用view_nii查看4D图像时,“十字准星处的值”和“光标处的值”总是显示第一个3D卷的值。

view_nii。ml3036,代码'imgvalue = double(img(sag,cor,axi));'使imgvalue始终为第一个3D卷的值。

阿巴斯就

一个很好的工具箱,用于在MATLABe中查看Nifti格式文件,特别是当你在FSL中进行处理,并想在MATLAB中进行解释时
谢谢

杰夫一

我找到了读取动态分析文件的最佳工具

r黄

你好吉米,

你的软件很有用。非常感谢您的好意。

你能告诉我(1)如何将其他2或3张图像叠加在一起,(2)如何选择不同的阈值吗?

提前谢谢

rhuang

克雷格·汉密尔顿

非常有用,做得好。对复杂数据类型的支持万博1manbetx呢?

吉米沈

scl_slope如何影响data_type?

你好格:

谢谢你给我的网址。Jonas处理"scl_slope"的方法是将图像数据类型转换为"double",这是有意义的,尽管在NIFTI文档中没有指定(参见下面的URL):http://nifti.nimh.nih.gov/nifti-1/documentation/nifti1fields/nifti1fields_pages/scl_slopeinter.html

我修改了“xform.m”。因此,在使用“scl_slope”的情况下,它将把图像数据转换为“double”。我正在更新这个文件到MATLAB中央文件交换,NIFTI_20060307将很快出现在那里。

再次感谢您宝贵的意见,

吉米

——原始邮件

你好吉米,

谢谢你给我回电话。不幸的是,在这种情况下一定有其他错误,因为在Matlab中的图像只有值0或1,而在FSLview或SPM中查看的图像有值0和1之间的范围,图像类型是uint8。

最好的
霍利尔。

吉米沈

如何从NIFTI hdr获得原始信息?

你好格:

非常感谢您的意见。

实际上,“scl_slope”和“scl_inter”参数都是正确的
读取并应用到输出NIFTI结构的“img”变量(参见
“xform_nii。M "文件):nii。Img = scl_slope * double(nii.img) + hdr. dir .scl_inter;

显示“hdr.dime”的原因。“Scl_slope”作为零是我的一个特征
包中。它表示“img”变量已经被修改了。你
也可以找到“hdr.hist”。Qform_code和hdr.hist。Sform_code”将是
在适当的仿射变换后设置为零。

“hdr”的原始值可以通过:hdr =很容易找到
load_nii_hdr(文件名);这里应该有正确的值(0.003922)。

吉米

——原始邮件

你好吉米,

我发现你的NiFTI工具箱非常有用,但我有一些
一些数据存储在uint8 .nii中带有缩放因子的问题。
的值将作为二值图像加载到数据中
nii.hdr.dime。Scl_slope为零,而不是正确的值
(0.003922),我可以使用spm5或FSL中的avwhd。

非常感谢你所提供的任何帮助,

霍利尔。

吉米沈

嗨亨利:

这是一个高级特性,它已经包含在工具箱中。

下面是使用该功能的简短指南:

1.使用"ana = load_nii(ana.img)"将分析图像加载到"ana"结构中,并确保变量"ana. img "。“Img”要么是“single”,要么是“double”。如果不是,使用步骤2转换它。

2.转换变量“ana。”Img”到“single”时,需要使用“make_nii”命令:“ana = make_nii(ana. Img)”。Img, ana.hdr.dime.pixdim(2:4), ana.hdr. history .originator(1:3), 16)”。

3.使用"thresh = load_nii(threshold .img)"将阈值图像加载到"thresh"结构中,并将其值和索引提取到"opt"结构中。Idx = find(threshold .img);Opt.setvalue.val = thresh.img(find(thresh.img));”。你可以通过命令"help view_nii"查看更多使用"setvalue"的细节。

4.为"opt"结构体添加其他值:"opt.command = 'init';Opt.useinterp = 0;"。

5.使用命令“view_nii(ana, opt);”绘制阈值图像与底层分析图像。

6.不要点击“interp on/off”菜单。它不能正常工作。如果你想看到插值的一个,使用:"opt.useinterp = 1;View_nii (ana, opt);

请让我知道你是否可以用底层分析图像绘制阈值图像。

吉米

——原始邮件
我最近一直在使用Matlab的Nifti工具箱,想知道是否有可能将阈值图像叠加到分析的图像上。实际上,这意味着阈值图像的所有0值都应该是透明的,以便能够看到底层的函数图像。

非常感谢您的提前帮助,并使这样一个有用的工具可用!

你的真诚,

亨利Lutcke

bioomedizinische NMR Forschungs GmbH

am Max-Planck Institut für生物化学

法斯伯格11岁吗

37077年哥廷根

德国

杨直

吉米沈

你好安妮塔:谢谢你的反馈。然而,我检查但没有发现加载或保存非整数数据类型的nii文件有任何问题。例如,你可以从以下网站下载一个典型的NIFTI数据(zstat1.nii):http://nifti.nimh.nih.gov/nifti-1/data该文件是单(float32)数据类型。您可以使用:nii=load_nii('zstat1.nii')输出到nii结构,并使用:save_nii(nii, 'newfile.nii')输出到一个新文件。如果您还有问题,请给我发邮件,让我看一下您的数据。

安妮塔维

当我将nii文件输出为int时,这个程序工作得很好,但是当我将nii文件输出为unint时,图像就会失真。

MATLAB版本兼容性
使用R11.1创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!