文件交换

图片缩略图

NIfTI和分析图像的工具

version 1.27.0.0 (426 KB) by 吉米沈
在任何平台上加载,保存,制作,reslice,查看(和编辑)NIfTI和ANALYZE数据
4.6
97年评级

404下载

更新2014年1月22日

视图版本历史

查看许可协议

编者按:受欢迎的文件201820192020

请随时查看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维(例如时间序列等),您也可以指定一个范围,只提取1或几个卷。

3.save_nii。m:保存由“load_nii. m”加载的N维NIfTI结构(N可以从3到7)。或由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 only程序兼容。

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结构中,从6个侧面中的任何一个截取体积,同时保持发起者、体素大小、数据类型和描述不变。在您使用reslice_nii之后,这个程序特别有用,因为新卷很可能有不同的维数。

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

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

11.save_untouch_nii。m:保存由“load_untouch_nii. m”加载的N维NIfTI结构(N可以从3到7)或ANALYZE结构(N可以从3到4)。或由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文件,并将L-R翻转数据保存到NIfTI文件中。警告:请谨慎使用此程序,尽管您总是可以翻转它。

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

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

引用

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

意见及评分(222

Edite Figueiras

你好,我有一个大数据集(大约100gb),我想以nii格式保存。我无法打开完整的数据集,因为我没有足够的内存。有没有一种方法来保存完整的数据集在一个nii文件?

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

darova

Mehul耆那教徒的

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

马库斯Adamek

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

马库斯Adamek

将mm坐标与Freeview进行比较,在转换过程中有一个明显的问题,导致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二进制格式到更灵活的基于新JNIfTI格式的文本/二进制JSON的转换,该格式在JNIfTI规范中定义https://github.com/fangq/jnifti/,使数据文件的大小更小,加载/保存更快,人类可读和可扩展。

jifti工具箱可以使用基于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

汤姆·柯克

不幸的是,我发现这是非常错误的。这方面的一个简单示例是,使用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菲利普

年代

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

乌米特科里奇

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

安德烈·席尔瓦

Helmar Waiczies

Javaid伊克巴尔

语tekchandani
亲爱的,你有没有看过。nii的图片并转换inro .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。nii,[][],数据类型);
save_nii (nii2 mynewnii_file.nii);

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

是否有可能转换nii文件这种方式或我做了一些错误的这里?

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

Farzana帕文

运行时显示错误!如何阅读.NII图像将如何阅读?

盾级金

Ellankavi Ramasamy

你好吉米,

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

谢谢,
Ellankavi

熊猫大

你好~
我没有得到覆盖。ziphttp://www.rotman-baycrest.on.ca/~jimmy/NIFTI/overlay.zip
能否提供一个新的地址来获取EEGnii和Ti.nii
谢谢你!

安吉丽娜B。

你好~
我有3D和4D的脑核磁共振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图像转换为二进制图像
谢谢

张丽佳(音译)就

正如Jiancong Wang和Stefano Orsolini所说,在没有任何通知的情况下,方向从放射系统转向了神经系统。另外,也没有地方指定数据朝向。

所有其他功能都在工作,只是需要记住改变方向。

斯特凡诺Orsolini

正如Jiancong Wang在2016年8月22日的评论中所说的,定向处理有一个非常严重的问题。

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

imu931

卡尔Spuhler

Jiancong王

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

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

贾斯汀Blaber

你好,

你知道我如何使用"rot_orient"和"flip_orient"中的信息来将bvectors重新排列为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行)
昏暗的=双(nii.hdr.dime.dim ([2:4]));

阿拉shamasneh


我不知道如何使用这个工具

大卫Groppe

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

大卫Groppe

阿里Aghaeifar

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

以利亚摇滚

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

我想在不改变任何空间方向的情况下修改图像值,那将是非常棒的。

我该怎么做呢?

Alize

乔的家伙

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

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

xform_nii>change_hdr错误
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, tolerance, preferredForm);

调试的想法吗?

辛迪

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

塞缪尔·巴恩斯

我认为可以改善“公差”选项的可靠性的一个小问题。在XFORM中检查仿射矩阵时,首先删除矩阵的分辨率缩放将是有帮助的,如你有高度各向异性的体素(MRI常见,比如0.7x0.7x5.0),它使其变得非常困难Rational“耐受性”计算以确定矩阵取向。在该示例中,第三列中的所有元素为* 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) < tolerance*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 < tolerance)) = 0;
hdr.hist。new_affine = [[R;[0 0 0]] [T;1];

我还对矩阵的分量进行平方,这样所有列的和都是1,所以你可以检查每个元素的绝对值而不是元素

Matlab还想把OR运算符从“|”改为“||”。

sahil聊巴贾杰

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

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

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

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

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

如果有人能帮我解决这个问题,我将非常感激!

谢谢,
Sahil聊

Priyanka Mehta.

这是一个很棒的工具!

我使用Freesurfer创建了海马子域遮罩,我想在我的fMRI数据上使用它来获得子域体素。但是,我如何知道子字段和fMRI数据是否在同一个空间?是否有一种方法,我可以使用view_nii,看看是否两个图像对齐正确?

谢谢你的帮助/建议。

布莱恩·C Coe

我是否遗漏了一些东西,或者这里没有原始的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卷,为此我尝试了使用collapse_nii_scan。我得到的结果是一个4D Nifti文件('multi_scan.nii')有四个“时间点”,而不是一个包含最初DICOM系列的所有图像的单一3D卷。任何关于这方面的想法都将非常感谢!

问候,
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" ("Left-to-Right"或"Right-to-Left"),但load_untouch_header_only没有。“qform_xorient”在头文件中还是从其他参数解释?

谢谢!

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

谢谢,
Mayada

janki mehta

你好,

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

谢谢,

Janki

Meytal

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

我在加载一些文件时遇到了问题。
我在FSL中准备了一个掩码文件,并希望将其加载到MATLAB中,以及一些功能文件。
问题是仿射矩阵对我的两个主题有非正交旋转,所以我不能使用“load_nii”。
我不确定我是否可以使用“Reslice_nii”,因为我仍然需要这个掩码文件与我的功能文件具有相同的维度。
任何想法都将非常感谢!
谢谢,
Meytal

kb

杰里米·曼宁

令人难以置信的有用和写得良好的工具箱。什么服务!

非常感谢! !

纳拉

我在加载和查看。nii文件时遇到了您的MATLAB代码。我目前正在研究自闭症患者的大脑地图和大脑成像。我从ABIDE数据库中得到了病人的核磁共振成像。但我对MATLAB真的很陌生。我不明白这段代码是如何工作的。它说用文件名替换文件名,我也这么做了。但我想它还需要一些修改,这样我就可以使用它了。你能告诉我如何使用这个代码吗?

易隋

伟大的工作!
我对它进行了一些更新,并添加了一些新功能。
请检查
//www.tianjin-qmedu.com/matlabcentral/fileexchange/47072-3d-nifti-data-viewer

基督教

基督教

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

保罗Groot

嗨Sangeetha,

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

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

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

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

(10) *兰德(10);

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

保罗

Sangeetha

你好,谢谢你的帮助。当我试图加载nii文件时,我得到了下面复制的错误。有什么问题吗?

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

在xform_nii>change_hdr错误
327)
if det(R) == 0 |
~ isequal (R(找到(R))和(R)”)

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

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

Xen

嗨,恭喜你出色的工作。
如果之前有人问过类似的问题,我道歉。我有16个tif格式的灰度切片,想把它们转换成nii格式。我该怎么做呢?谢谢。

吉米沈

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

Israna

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

吉米沈

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

Israna

谢谢代码的帮助。

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

谢谢

克莱尔

对不起,我找到了,感谢您的令人惊叹的功能

路加福音谢

伟大的功能
谢谢你的更新

吉米沈

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

尼古拉斯•于

view_nii工作不太好。
您给出的示例非常好,但是对于我的大数据,它提供了使用load_nii的线索。当我使用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.hist.descrip =“Mengye”;
save_untouch_nii (nii new_avg152T1_LR_nifti.nii);

除非你碰我。Img(1)=0,它不会被更改,尽管它也被加载和保存。只有标题(nii.hdr)会以您所做的改变方式进行编辑。

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

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

mylyu

嗨,吉米

有没有办法加载、编辑和保存。hdr而不需要对.img做任何事情?因为我发现SPM每次做共同注册时都会改变我的源文件头,我想把它改回来。似乎save_nii_hdr()是一个内部函数,我尝试使用它,但破坏了我的nifti文件。

谢谢,
Mengye

NH

完美!谢谢你!

吉米沈

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

导出绘图数据到图像是一个简单的选择。我觉得你已经做得很好了。你所要做的就是隐藏背景图像和坐标轴,然后再将图导出为图像。以下是如何做到这一点:

1.在导出之前,使用鼠标点击您的情节(使其活跃);

2.通过运行隐藏轴:

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

3.隐藏背景图像通过运行:

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

4.将plot导出为图像。现在它没有背景和轴。

NH

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

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

Orestis

Guilherme可可Beltramini

吉米沈

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

鲁道夫,

你好,我尝试用collapse_nii_scan连接两个4D nifti图像,但这给了我一个图像只有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。nii”来自NIfTI网站。我用它作为参考图像。

2.查看参考图像是什么样子的:
view_nii (nii);

3.假设我有一个变换矩阵,它会让参考图像在XY平面上逆时针旋转30度,矩阵如下:罪(π/ 6)因为(π/ 6)0;0 0 1);

4.Get old_xyz from reference image: 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。这是一个转换后的NIfTI图像,可以在任何地方使用。

6.为了使用我的工具箱查看这个图像,你需要对它进行reslice_nii('rl30。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),他们也会为你reslice它。

非常感谢您的评价!

Wannabegeek

我想我弄明白了。

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

我通过克隆头文件并使用save_nii()来解析

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

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

Wannabegeek

你好吉米,

我在使用save_untouch_nii()时遇到了问题。

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

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

nii = load_untouch_nii(“foo.nii”);
数据= nii.img;
%data = data + 10;
nii_mod = make_nii(数据);
% 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.3943 e-08

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

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

你告诉我你用“analyze75read”得到一个体素值为1.089e+12。我不能复制你的结果。

迈克尔

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

吉米沈

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

迈克尔

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

迈克尔

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

吉米沈

我从来没有这样一个叫做“read_nii_img”的函数。请参阅以下网址的所有功能及用法:

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

杰西卡·伯纳德

我最近发现了,现在我们已经升级到Matlab 2011A,其中许多功能不再正常工作。使用read_nii_img时,我们现在遇到错误说:

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

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

吉米沈

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

迈克尔

你好,

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

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

错误在==> load_untouch_nii在103
[nii.hdr, nii.filetype nii.fileprefix nii。机]= load_nii_hdr(文件名);

错误在==> apply_fsl_transformation_matrix在5
vox = load_untouch_nii (' / SCR2 DTI / det_track / BM3K /反式/ 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”。我不愿意这样做。输入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"在“编辑”选项卡下编辑体素值,然后点击“文件”选项卡下的“保存显示图像”。

你的情况中不一致的原因是你自己没有正确解释标题中的缩放因子。

Priya


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

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

我想发送我的输入文件,所以知道我的问题会更好。请告诉我一种发送我的输入文件的方法。

[nii1.hdr, nii1.filetype nii1.fileprefix nii1。机]= load_nii_hdr(“1 sub_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加载器应该做的。

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

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。加载许多Analyze和NIfTI文件,然后使用'save_nii. m'。m'保存到NIfTI文件。我没有发现数据大小“显著增加”。如果可以的话,请将您的原始Analyze数据上传到我可以访问的地方,并将链接发邮件给我(不要使用邮件附件),以便我尝试复制您的问题。

顺便说一下,直到8月2日之前我将无法使用。

杨刘

亲爱的大家:

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

泰勒

我下载了新的程序,所以现在我得到了一个不同的错误,建议您刚才提到的。

然而,reslicing不是一个选项,因为我们首先使用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);
片= nii.img (:,:, slice_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有一点变化:视场-宽度: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有一点变化:视场-宽度: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文件,并设置像素值低于零。我首先加载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 "要么是"单"要么是"双"。如果不是,则使用步骤2进行转换。

2.转换变量“ana”。Img " to "single",你需要使用"make_nii"命令:"ana = make_nii(single(ana. Img), ana.hdr.dime.pixdim(2:4), ana.hdr.hist.originator(1:3) "。

3.使用"mask = load_nii(brain_mask.nii)"来加载大脑
掩码图像,并将值和索引赋给"opt" struct: "opt.setvalue. "idx =找到(mask.img);opt.setvalue.val =特征向量;”。你可以通过命令"help view_nii"来查看使用"setvalue"的更多细节。

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

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

6.不要点击“interp开/关”菜单。它不能正常工作。如果你想看到插值的,使用:"opt.useinterp = 1;view_nii (ana、选择);”。

如果你还有什么问题,请尽管问我。

吉米

胡安

嗨,吉米。
非常感谢您提供的这个非常有用的工具箱。
我的问题是关于如何覆盖在图像。我需要覆盖图像上每个体素的主要特征向量;我有x, y, z方向的体素在matlab数组了,但是我想知道我怎样才能显示在同一图像或如果它可能修改代码保持的主要形象,摆脱所有的选项你给喜欢颜色和十字丝的位置,等,因为我主要需要显示图像和显示它的特征向量。
谢谢,
胡安

吉米沈

嗨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/时,它给出'Out of Memory'错误。img的数据。

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

吉米沈

嗨Anne-Lene:

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

如果您在使用“expend_nii_scan”后没有看到差异,这意味着您的文件中只有一个扫描(一个卷)。自从你说“…look at the nifti images separatley…”,我认为你有几个图像(卷或扫描)在一个文件,并想要分别对待他们。

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

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

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

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

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

例如:
数据类型= 16;%更改数据类型为float32
nii2 = make_nii (nii。Img, nii.hdr.dime.pixdim(2:4), nii.hdr. hhistory .originator(1:3), datatype);
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。是头信息描述如何“nii. Hdr”。Img”是定向的,体素大小是什么,发起者是什么,等等。

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

如果你有进一步的问题,请说得更具体一些(例如列一个要点清单),这样我就知道如何帮助你了。

吉米

Anne-Lene

我看了那些链接,并尝试了expand_nii_scan,恐怕我还是不明白。我的文件有nii扩展名,当我使用扩展时,我得到另一个nii文件,我没有看到它和我的原始文件之间的区别,当我使用view_nii。

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

Anne-Lene

吉米沈

嗨Anne-Lene:

没有问题是愚蠢的。

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

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

大多数帮助可以通过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”。然后使用“save_nii”保存。

如果你还有其他问题,请具体一点,我可以帮助你。

吉米

Anne-Lene

这就跟你问声好!

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

我已经使用fsl前奏展开我的核磁共振成像,他们现在在nifti格式。我现在需要比较这些图像与图像,我已经展开与matlab算法,我自己做的。

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

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

如果你能给我一些指导,我会非常感激的。

Anne-Lene

吉米沈

你好大卫:

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

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

我希望这仍然能在某种程度上帮助您加载大型数据集。

吉米

大卫

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

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

感谢您分享这项工作Jimmy

吉米沈

你好迈克尔:

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

其次,我研究了Francesca的数据,并且图像数据的大小与标题中指示的大小不匹配。对于这样的文件,我无法映像任何软件都可以处理它。

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

谢谢,
吉米

迈克尔Zeineh

嗨,弗朗西斯卡,吉米,

有趣的是,我在使用核磁共振成像时遇到了同样的问题。我找到了一个变通办法。如果使用MRIcro,您将roi保存为一个单独的分析标题(而不是嵌入式标题),然后它将与MRIcro打开。然而,这仍然不会打开吉米的工具。但是,如果您将.img文件重命名为.nii,那么两个Jimmy的工具都将加载它。

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

迈克尔

吉米沈

嗨威:

谢谢你的价格。

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

您是对的,这个意外的值是由“scl_slope”参数引起的,当您使用“load_nii.m”时,正确地应用了这个参数。但是,我不确定您是否注意到这是一张放射学图像,即LHS在右边,RHS在左边。在这里,L/RHS的意思是左/右。

When you use "load_nii.m", it will do all the proper flipping and rotation according to the affine matrix in the header, and the img will always be in RAS orientation (i.e. x: L->R, y: P->A, z: I->S). In your particular case, instead of use [32 32 23], you should use [33 32 23], since x axis is flipped, i.e. new_x = max_x(64) - old_x(32) + 1 = 33.

其他软件可以选择在轴位/矢状位/冠状位视图周围进行适当的标记,例如FSL。

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

吉米

弗朗西斯卡

你好吉米,

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

非常感谢您的帮助,再次感谢您的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”损坏。你试过在mrmicro下成功打开它吗?如果是的话,请上传这个文件,让我看看。

此外,从你发布的错误信息来看,你似乎在使用我的工具的一个非常旧的版本。我通过显示错误的行号注意到了这一点。但是,我仍然认为这个错误是由错误的形象造成的。

请让我知道,
吉米

弗朗西斯卡

亲爱的吉米,

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

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

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

> > ROI = load_nii(“lCC_19850624TRTN_2x2x2_b1000_a_fa.nii”);
???使用==>重塑错误
为了重塑,元素的数量不能改变。

错误在==> load_nii_img>read_image在266
IMG =挤压(REPAPE(IMG,[HDR.DIME.DIM(2:4)长度(IMG_IDX)]))));

==> load_nii_img以62的错误
[img, hdr] = read_image (hdr、文件类型、fileprefix、机器、img_idx old_RGB);

错误在==> load_nii在66
[nii.img,nii.hdr] = ...

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

你能帮我个忙吗?

非常感谢,祝一切顺利!

弗朗西斯卡

吉米沈

嗨,亚历克斯:

理论上,有了头信息在手,除了扫描折叠/展开之外,切片折叠/展开也是可行的。目前我还没有找到这样的工具,但是以后可能会考虑您的建议。

谢谢你的反馈。
吉米

吉米沈

嗨Wen-Tung:

问题可能出现在ImageJ使用的模块中。我尝试了核磁共振成像,得到了和你描述的一样的结果。即当hdr.dime。数据类型= 32 & hdr.dime。Bitpix =64,不支持。万博1manbetx当hdr.dime。数据类型= 64 & hdr.dime。bitpix = 128,它的工作原理。

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

我还尝试了其他流行的软件,比如AFNI。32/64是由AFNI支持的。万博1manbetx当我尝试64/128,它抱怨“不支持的ANALYZE datatype =万博1manbetx64”,这是正确的。

因此,如果您必须使用datatype=32 complex,您必须找到正确的软件来使用。AFNI是我刚刚测试的其中之一。

所有最好的!
吉米

亚历克斯

亲爱的吉米,

我想创建大的NIfTI文件使用计算机与相对较小的内存。似乎我可以通过一次处理几个切片,然后使用collapse_nii_scan重新处理来做到这一点。这看起来有点笨拙,我猜它也会相信折叠的部分是一个时间序列,而不是拼接在一起的一个大卷?假设我可以从一开始就提供一些头信息,有没有一个工具可以将切片流到NIfTI文件中?

谢谢,
亚历克斯。

Wen-Tung王

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

吉米沈

嗨Wen-Tung:

首先,感谢你的评价。

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

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

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

在测试上面的脚本时,你收到错误消息了吗?

吉米

Wen-Tung王

嗨,吉米:
我试图保存一个复杂的2D矩阵(MRI图像)分析格式使用您的脚本:
数据类型= 32;
安娜= make_ans (myMat,[][],数据类型);
save_untouch_nii (ana, C: \ \测试数据);
当你试着阅读试卷时。使用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(“yourimg.nii”)

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

如果你用view_nii(nii)查看它,点击“视图”菜单,然后点击“图像信息”,“体素大小”是一个体素的宽度、高度和深度。

因为Analyze和NIfTI图像对于图像中的所有体素都应该有相同的体素大小,最大值和最小值应该是相同的。

体素与原点的距离可以通过将“原点的[XYZ]”值与“十字准线的[XYZ]”值相减得到。对于距离原点的距离,以毫米为单位,因为“[XYZ] at origin”的值是[0 0 0],你可以只读取“[XYZ] at crosshair”的值。

请随意提问,

吉米

prateep穆克吉

你好吉米,

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

同样,使用这个工具,我们能求出一个像素到原点的距离吗?请在这方面给予一些提示。

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

谢谢,
Prateep。

吉米沈

嗨,克里斯:

谢谢你的反馈。我已经解决了这个问题。而是使用nii.img=double(nii.img);我只做了两倍的二维图像显示。如果原始的类型是uint8,我会让它保持原样。

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

吉米

吉米沈

嗨Pieter:

那是因为你利用了我默认的“容忍”,允许10%的扭曲。你可以用我的"reslice "。M”程序,并精确地指定体素大小。

Jiimmy

Pieter Vandemaele

你好吉米,

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

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是[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]

pixdim数组的差值为[0 0.01 0 0.01 0 0 0]

是我发现了漏洞还是我脑子里有漏洞?

Pieter

克里斯那首

嗨,吉米

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

nii.img =双(nii.img);

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

克丽丝

克里斯那首

嗨,吉米

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

%此文件的一部分是在GNU许可下从
% MRI_TOOLBOX由澳大利亚弗林德斯大学CNSP开发

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

克丽丝

吉米沈

嗨,麦迪:

是的,用我的工具很容易做到这一点。下面是步骤:

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

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

吉米

曼迪

你好吉米,

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

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

我试着用view_nii函数来做这件事,使用保存在.jpeg/.fig格式的圆圈,给出图形句柄和nii,使用视图函数的帮助部分中的描述。但我在图形属性上遇到了麻烦,尤其是函数“集”。我得到的错误几乎在每个图形属性,从'菜单栏'在第291行程序。我是matlab的初学者。实际上,我很惊讶我可以使用其他函数,这就是为什么我说你的文件是如此友好。我很高兴知道我该怎么做。

总而言之,我想知道的是,是否有一种方法可以在连续的切片上绘制一个圆(给定它的半径和位置)。

吉米沈

你好,妮可:

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

为了使用'make_nii。m',你已经有了一个3D矩阵,你只能通过你的眼睛来辨别AC Origin,而不是通过任何转换。

因为'make_nii。m'为RAS方向,负z坐标为向下,即z坐标从下端到上端。

吉米

妮可

你好吉米,

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

我现在知道体素被计数了(不是位置单位mm)。现在,问题中的原点是与大脑中切片板的x, y, z偏移量相关的吗(即在扫描过程中定位切片时的偏移量),还是切片板本身中的原点?我认为是前者。

如果是前者,那么我不确定为什么它必须相对于img(1,1,1),而不是slab的整体偏移量。我有我的偏移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 Origin的单位是毫米。但是,您必须告诉NIfTI数据您的[0 0]毫米在哪里,这样其他人在打开NIfTI数据时也可以知道它。因此,参数“原点”只能用体素来表示,以确定你的3D矩阵的准确位置,使之成为AC原点。

吉米

妮可

你好吉米,

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

谢谢!

妮可

西蒙•罗宾逊

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

西蒙•罗宾逊

玛丽安娜Jakab

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

NIfTI网站提供了两个示例数据集http://nifti.nimh.nih.gov/nifti-1/data:“avg152T1_LR_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.hist.originator”写成“[-2 -2 - 00]”。我需要查看“t1_icbm_normal_1mm_pn0_rf0”。img / hdr”&“001。Img /hdr”,以便进一步回答这个问题。你能把它们上传到你的FTP网站上,然后把链接发给我吗?

斯特拉郑

1.我已经手动设置nii_01.hdr.dime.xyzt_units=2;它现在可以被自由冲浪的人转换。谢谢!
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。img和t1_icbm_normal_1mm_pn0_rf0。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, Originator在nii_001.original.hdr。Hist与ni0 .hdr. Hist相同,为[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在MRIcro中显示为[0 00],001的来源。在MRIcro中显示的img是[2 2 2]

4.rot_orient = [], flip_orient nii_001.hdr =[]。嘘,nii_002.hdr。嗨st, but not in their origianl header.

5.当001年。Img被转换为*。错误信息如下所示

mri_convert。/源自/ 001。img /源自/ 001. mgz
阅读/源自/ 001. img…
信息:阅读作为双文件nifti
nifti1Read(): unknown space units 0 in ./orig/001.hdr

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

最好的问候,
斯特拉,

大带宽、南洋Technoligical大学
新加坡,

斯特拉郑

这是我用来分析图像读写的最好的工具。非常感谢您的贡献和分享。

Ning曹

(可能的)错误报告:

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

我只是想报告一个可能的bug在20070426版本。

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

view_nii。m L3036,代码'imgvalue = double(img(sag,cor,axi));'使imgvalue始终是第一个3D体积的值。

阿巴斯就

在MATLAB中查看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”的情况下,它将将图像数据转换为“双”。我正在将此文件更新为Matlab中央文件Exchange,并且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.dime.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,而不是正确的值
(0.003922)我可以看到使用例如spm5或avwhd从FSL。

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

霍利尔。

吉米沈

嗨亨利:

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

以下是使用该功能的简要指南:

1.使用“ana = load_nii(ana.img)”来加载你的分析图像到“ana”结构,并确保变量“ana.img”。Img "要么是"单"要么是"双"。如果不是,则使用步骤2进行转换。

2.转换变量“ana”。Img " to "single",你需要使用"make_nii"命令:"ana = make_nii(ana。Img, ana.hdr.dime.pixdim(2:4), ana.hdr. historiginator(1:3), 16)"。

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

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

5.通过命令“view_nii(ana, opt);”绘制阈值图像和已分析图像。

6.不要点击“interp开/关”菜单。它不能正常工作。如果你想看到插值的,使用:"opt.useinterp = 1;view_nii (ana、选择);”。

请让我知道,如果你能绘制你的阈值图像与分析图像的衬底。

吉米

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

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

你的真诚,

亨利·莱科克

bioomedizinische NMR Forschungs GmbH

我是马克斯-普朗克研究所für生物物理化学

点Fassberg 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中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!