问题标签 [simpleitk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1531 浏览

python - 将 VTK 非结构化网格转换为结构化网格

我的问题的背景是我有一个保存在 .vtk 文件中的 3D 结构,我需要对其进行操作(扩张、侵蚀等)。以下代码片段被设计为按顺序运行,即如果您一个接一个地运行它们,应该没有问题(除了我提到的那些!)。

我对VTK很陌生,所以对任何非常基本的错误表示歉意!

问题

我的问题源于 SimpleITK 的问题,它无法读取 UnstructuredGrid 或 PolyData:

然而,SimpleITK 可以读取 StructuredGrid,所以我尝试通过使用 VTK 读取和转换来解决这个问题。

然而,从那时起,我尝试过的每一种方法似乎都失败了。

建议的解决方案

转换为numpy,然后转换为sitk image

我试图将它转换为一个 numpy 数组 (),然后插入一个规则网格,虚拟变量为 1 以指定结构上的值。

但是,当我在 ParaView 中加载它时,会为输出显示一个边界框,但输出的轮廓是空的。

使用ShepardMethod

在将 UnstructuredGrid 转换为 PolyData 之后,我尝试使用内置的 进行插值ShepardMethod(因为我经常看到 ShepardMethod 被应用于 PolyData):

与上面的 numpy 工作一样,这在 ParaView 中提供了一个边界框。应用轮廓提供了两个三角形的结构,即几乎没有任何东西似乎已成功写入。或者,我尝试使用 VTK 直接编写输出。

这产生了与以前相同的输出。

使用ProbeFilter

我尝试使用上述方法ProbeFilter(同时转换为numpy直接写入)。不幸的是,输出与上面相同。

sitk.WriteImage(probe_img,file_out)

但是,这似乎没有产生可行的输出(vtkStructuredGridWriter产生一个空文件,并且probe_numpy是空的)。

更改 ParaView 输出

我的原始数据来自一个结构化网格 .vtk 文件,我使用 ParaView 打开该文件,然后剪辑以删除网格中不需要的结构。保存输出保存了一个非结构化网格,我一直无法弄清楚我是否可以改变它,并首先避免这种混乱!

0 投票
1 回答
1283 浏览

python - SimpleITK:应用逆变换

我最近开始使用 SimpleITK 进行图像配准。对于我当前的项目,我需要配准 X 射线图像和 CT 图像,然后将逆矩阵应用于跟踪 X 射线图像的 ROI 掩模。

我得到了这条线的逆矩阵:

如何将转换应用于 ROI 蒙版?

0 投票
1 回答
990 浏览

python - 从 SimpleITK 变换中获取矩阵和平移

我正在从文件中读取 ITK 转换。我无法弄清楚直接从转换中获取翻译矩阵的 API。

这是打印的结果:

是否有直接获取矩阵和翻译的功能?

看起来可以从 t.GetParameters() 的最后三个项目中检索翻译:

会给:

0 投票
1 回答
788 浏览

python - 为什么 SimpleITK 不使用 imageJ 显示图像?

我是 ITK 的新手。我写了一个小程序来使用sitk读取图像并使用imageJ显示图像。

要将 simpleITK 链接到 imageJ,我设置了环境变量。但是我收到了 sitk.Show() 的以下错误:

imageJ 输出如附图所示。有人可以告诉你有什么问题吗?

在此处输入图像描述

0 投票
0 回答
2594 浏览

python - 将 DICOM 图像重新采样为大小和间距并对齐到相同的原点

我有一组 4 个 DICOM CT 卷,我正在使用 SimpleITK ImageSeriesReader 阅读它们。其中两张图像代表患者手术前后的 CT。其他两个图像是在前 2 个 CT 图像上分割的二元分割掩模。分割是其源 CT 的 ROI。

所有 4 张 CT 图像,具有不同的大小、间距、原点和方向。我已尝试应用此 GitHub gist https://gist.github.com/zivy/79d7ee0490faee1156c1277a78e4a4c4将我的图像大小调整为 512x512x512 和间距 1x1x1。但是,它不会将图像放置在正确的位置。从图片中可以看出,分割的结构始终位于 CT 图像的中心,而不是正确的位置。

这是我的“原始”DICOM 图像及其肿瘤分割(橙色斑点)。

在此处输入图像描述

这是在“调整大小”算法并写入磁盘之后(与以前的图像相同,只是肿瘤因不一致而被涂成绿色斑点): 在此处输入图像描述

用于将所有 4 个 DICOM 卷重新采样到相同尺寸的代码:

用于将 ROI 分段图像“粘贴”为正确大小的代码。可能是多余的。:

0 投票
1 回答
1437 浏览

python - SimpleITK not working with any data type, be it 3D or 2D

I'm using SimpleITK to load in a layered tiff image, its a volumetric image having 30 planes/slices.

After playing around a lot with skimage and imageio Ive found out that SimpleITK is the best way to handle volumetric images but the problem is that none of the functions seem to work for my image.

After reading the image in, I can easily convert it to numpy and even display it using sitk.Show() so its loading up properly. but any function I use on it such as:

gives the warning:

sitk::ERROR: Pixel type: vector of 16-bit unsigned integer is not supported in 3D byclass itk::simple::

I tried casting to to any other datatype as well but I keep getting errors again:

sitk::ERROR: Filter does not support casting from casting vector of 16-bit unsigned integer to 32-bit float

I tried a 2D variation as well of the above:

but this time I got the error:

sitk::ERROR: Pixel type: vector of 64-bit float is not supported in 2D byclass itk::simple::ConnectedThresholdImageFilter

Any idea what may be causing this?

P.S. I have read the question: SimpleITK N4BiasFieldCorrection, not working with any data type and I believe this is not a duplicate as his problem is solved by casting whereas mine does not work even for casting.

Thanks

0 投票
2 回答
712 浏览

python - 无法遍历 SimpleITK 中的图像

我想阅读不同文件夹中的图像。我写了以下代码

当我运行它时,我收到一条错误消息:

RuntimeError:SimpleITK ReadImage 中引发异常:/scratch/dashboard/SimpleITK-OSX10.6-x86_64-pkg/SimpleITK/Code/IO/src/sitkImageReaderBase.cxx:89:

sitk::ERROR: 文件“xxxx_image.nii”不存在。

如果我只是运行打印命令,我可以看到指定文件夹中的所有文件以及路径。将不胜感激。

0 投票
2 回答
1148 浏览

python - AttributeError:“模块”对象没有属性“ElastixImageFilter”

我已经按照链接SimpleElastix中的安装进行了操作。当我运行以下命令安装 SimpleElastix 的 python 包装器时,它运行成功并且可以导入包:

我可以导入包并使用如下功能:

但是,一旦我从 python 终端退出到 bash,并再次更改为 python 终端命令行,它就无法识别该函数:

你有什么想法可以帮助解决这个问题吗?是什么原因?

0 投票
1 回答
522 浏览

python - 如何将nii切片转换为序列?

我有一个 nii.gz 格式的文件,有 20 个切片。但是有一些问题,我只需要前 13 片。所以我使用 load_nii 或 simpleITK 来获取 20 个 silces 的数组。我想做的只是使用前 13 个切片(现在是数组)来生成一个新的 nii 序列。

0 投票
2 回答
1283 浏览

python - 如何更改轴 SimpleITK::ImageSeriesWriter 使用?

SimpleITK::ImageSeriesWriter 默认沿 Z 轴对给定的 3D 体积进行切片,并在 XY 视图中写入 2D 图像切片。

如何更改轴以使输出处于 XZ 或 YZ 视图中?

换句话说,如果默认的 Z 轴切片在 Axial 视图中,我如何获得 Coronal 和 Sagittal 视图的切片?

我尝试了GitHub:FNNDSC/med2image的输出 xyz 函数。但是图像数组是盲目写入的,因此有时 X 和 Y 被转置,或者其中一个轴被反转(翻转)。所以我觉得有必要编写自己的代码来完全控制。

上面的代码将成功写出 Z 轴的切片。如何修改代码以便获得另外 2 个视图的切片?