2017-08-14 52 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