2017-08-14 54 views
1

编辑注: 这个问题最初表述为SimpleITK.Show()ImageJ中在Linux上生成错误

如何在Linux SimpleITK.Show()链接到ImageJ的?

通过将SimpleITK 1.0.0升级到1.0.1,我能够从SimpleITK.Show()启动ImageJ。但ImageJ无法打开“sample_mri.hdr”。 ImageJ生成以下错误消息。

文件是不支持的格式,读者

插件不可用,或者没有被发现。

root/local/linux/ImageJ/open(“/ temp/TempFile-7131-2.nii”);

root/local/linux/ImageJ/rename(“/ temp/TempFile-7131-2.nii”);

我已经安装了相应的ImageJ插件来读取hdr/img(分析格式)。

sitk.Show(img, 'sample image', debugOn=True) 

FindApplication搜索路径:[./Fiji.app,/顺/家/ vwang我可以直接转到文件>打开

调试消息从ImageJ的开放 “sample_mri.hdr” /bin/Fiji.app〜/斌/ Fiji.app,/opt/Fiji.app,/usr/local/Fiji.app]

结果:

FindApplication搜索路径:[./Fiji。 /cis/home/vwang/bin/Fiji.app,〜/ bin/Fiji.app,/opt/Fiji.app,/usr/local/Fiji.app]

结果:

FindApplication搜索路径:[./ImageJ,/顺/家/ vwang /斌/ ImageJ的〜/斌/ ImageJ的为/ opt/ImageJ的,在/ usr /本地/ ImageJ的]

结果:

FindApplication搜索路径:./,/顺/家/ vwang /斌/〜/斌/为/ opt /是/ usr /本地/]

结果:在/ usr/local/bin/ImageJ

显示命令:'/ usr/local/bin/ImageJ' '-e''打开(“/ tmp/sample-4434-0.nii”);重命名( “样品”);”

插件:

如何在Linux SimpleITK.Show()链接到ImageJ的?

我已经下载了ImageJ,我可以通过直接运行ImageJ来查看图像。过去有人问过类似的问题(Can not "link"SimpleITK::Show() with FIJI),但解决方案是针对windows操作系统的。什么是UNIX相当于

setx SITK_SHOW_COMMAND "C:\blah\blah\ImageJ\ImageJ.exe 

我的Python代码:

import SimpleITK as sitk 

img = sitk.ReadImage("sample_mri.hdr") 
sitk.Show(img, 'sample image') 

错误消息:

return _SimpleITK.Show(*args, **kwargs) 
RuntimeError: Exception thrown in SimpleITK Show: 
/tmp/SimpleITK/Code/IO/src/sitkShow.cxx:500: 
sitk::ERROR: Error in administrating child process: [No such file or directory] 
+0

的所有插件什么SimpleITK的版本是你使用的?请尝试1.0.1,因为错误消息应该有所改善。 – blowekamp

+0

我很好奇你是否尝试过使用ImageJ ITK集成? http://imagej.net/ITK https://github.com/imagej/imagej-itk – ctrueden

+0

@blowekamp 我升级到1.0.1,我不再收到错误消息。运行sitk.Show()后,ImageJ启动,但我收到两条错误消息(请参阅编辑)。 – DottedGlass

回答

0

SimpleITK是无法找到的ImageJ。尝试在Show命令中添加debugOn = True参数。这将向您展示它用于尝试查找ImageJ的搜索路径。

所以你的节目将是以下几点:

sitk.Show(img, 'sample image', debugOn=True) 

在Linux系统中,SimpleITK搜索路径以下选项:Fiji.app/ImageJ-linux64,Fiji.app/ImageJ-linux32,ImageJ的/ imagej,ImageJ和imagej。

如果您的ImageJ可执行文件被命名为其他内容,SimpleITK将无法找到它。我会建议使用软链接来使其可以找到,或使用SITK_SHOW_COMMAND环境变量。

更新:未找到ImageJ是您的原始问题。我不确定你的更新,但是通过设置debugOn标志,你可以看到SimpleITK用来尝试和启动ImageJ的实际命令行。

+0

该可执行文件被命名为ImageJ。我添加了调试消息。 – DottedGlass

+0

如您所见,SimpleITK以Nifty格式写出临时图像。 IIRC ImageJ的一些安装不附带Nifty I/O插件。你可以看看你在ImageJ的plugins目录下是否有nifty_io.jar文件?如果没有,你可以在这里得到它:https://imagej.nih.gov/ij/plugins/nifti.html –

+0

另一件要尝试的是SITK_SHOW_EXTENSION环境变量。您可以尝试将其设置为“.mha”。然后临时文件将以MHA格式写出,ImageJ可能会加载得更好。我们选择Nifty作为默认设置,因为它支持大多数像素格式,但您可以使用ITK支持的任何文件格式。有关Show函数的更多文档可以在这里找到:https://itk.org/SimpleITKDoxygen/html/namespaceitk_1_1simple.html#ac8416e6e7f02dedfe8373b83dbea411d –

0

在Ubuntu,我有完全相同的问题,这里是解决方案:

  1. 下载http://imagej.net/Fiji
  2. 解压斐济主目录〜/ Fiji.app
  3. 这个文件夹添加到您的PATH

斐济将包括你需要显示MRI文件,如nifti和MHA