问题标签 [medical-imaging]
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.
python - 使用参考卷将 .nrrd 分段转换为 Nifti 卷
我有 200 多个具有匹配分段的 CT 卷文件。卷采用 .nrrd 格式,分段采用 seg.nrrd 格式。我需要将这两种格式都设为 .nii.gz 格式,并且我想编写从一种格式到另一种格式的转换脚本。
关于卷,一切都很简单,使用sitk:
将 SimpleITK 导入为 sitk
img = sitk.ReadImage(“your_image.nrrd”) sitk.WriteImage(img, “your_image.nii.gz”)
我也对分段做了同样的事情,乍一看效果很好。但现在的问题是分段不再注册到卷中。图像尺寸和图像原点不再相同,因此我无法处理转换后的图像。
当我使用 3D-Slicer 执行以下手动步骤时,也会发生同样的情况: 1. 将 .seg.nrrd 文件加载到 Slicer 作为分割 2. 将分割保存为 .nrrd 文件而不是 seg.nrrd 3. 导入 .nrrd 文件作为 Volume 并将分段保存为 .nii.gz
但是我想出了一种在保留所有维度的同时手动转换数据类型的方法: 1. 导入卷以及相应的分段 (.seg.nrrd) 2. 将分段导出到标签图,并将参考卷设置为我的对应卷3.将Labelmap另存为nii.gz(4.不确定我的项目是否需要该步骤:将Labelmap转换为标量并安全为nii.gz)
在这两种情况下 3. 和 4. 我有一个具有匹配尺寸的 nii.gz 文件。但因为我有 200 多卷,所以我需要编写脚本。但到目前为止我还没有发现任何东西。你有什么想法?谢谢!
python - 我该如何解决这个项目的 shpe 和重新构建 CNN?
当我在医学图像数据上训练这个网络时 -train -benign -normal -cancer -test -benign -normal -cancer -valid -benign -normal -cancer 训练时出现错误
这是数据加载。import os import torch from torchvision 导入数据集,转换
从头开始在这里制作模型
在这里我定义损失和优化器
进行培训,我出现在这里的错误
这是一个错误
tensorflow - 图像分割中训练与推理的骰子分数
我正在使用以 dice_loss 作为训练损失函数的 U-Net 模型进行图像分割(多类)。用平滑项分别计算每个类的骰子分数,然后取所有类的平均骰子分数来计算损失。下面是我如何计算张量流中的骰子损失。
最后将批次中所有图像的平均值作为损失。
现在,在推理过程中,我以类似的方式计算骰子得分,但每个班级的骰子得分是单独报告的,而不是所有班级的平均值。下面是如何计算 tensorflow 中单个类的骰子分数
最后计算批次中所有图像的平均骰子分数。
在训练时,我取单个图像的平均骰子得分,然后对批次进行平均,因为这对我的数据集更有效,而不是一起计算整个批次的所有骰子得分。
我的问题是在推理期间
- 我应该分别计算每个图像的骰子分数,然后对批次取平均值还是一起计算整个批次的骰子分数?哪个是正确的方法?
- 同样在推理过程中,骰子分数计算中的平滑项是否应该存在?
matlab - 在 matlab 中为 Dicom_Picture 创建像素大小
我有 .dcm 格式的图片。从 Dicominfo 我了解到像素间距为 [0.9,0.9] mm,切片厚度为 1.98 mm。
我的任务:我应该获取真实(世界)坐标中的图片大小,然后在 matlab 中的所有三个投影中显示图片。
我有一个想法,我会在 matlab 中创建一个矩阵,但我很难创建像素大小间距。我的意思是矩阵中的像素就像一个正方形,是0.9mm * 0.9mm。我不知道我的方法是否正确,是否有一种简单的方法可以解决问题。非常感谢您的每一个回答
python - 从 .mha 文件中读取头信息
我只想从.mha
文件中读取标题。理想情况下,它会给我.mhd
与仅读取带有元数据的文件相同的效果。
我正在使用 SimpleITK 进行阅读,虽然它可以很好地读取图像,但我特别想创建一个元数据字典。
.mha
基本上是.mhd
与原始图像相结合,但我找不到任何关于如何分离它们的规范。我在这里的 ITK 文档中找到:
要跳过图像数据文件中的标头字节,请使用
HeaderSize = X
其中 X 是在读取图像数据之前要在文件开头跳过的字节数。如果您知道没有尾随字节(文件末尾的额外字节),您可以指定
HeaderSize = -1
MetaImage 将自动计算数据文件中提取字节的数量,假设这些字节位于数据文件的开头,并且在开始读取图像数据之前自动跳过它们。
但我在 SimpleITK 中找不到这个功能。
image-processing - 如果整个ground truth都是黑色的,则进行医学图像分割
我是深度学习的新手。我正在研究 CT 扫描医学图像。我想使用 UNet 架构来预测图像分割。我已经成功实现了 UNet,但是,我的预测完全是黑色的。我认为这是因为有图像,其对应的ground truth是黑色的(相当多的图像)。所以,我想这可能会导致问题。
如果整个蒙版是黑色的,则意味着图像中没有所需的对象。下面是一个示例图像;
以下是相应的基本事实。
我不知道如何处理这种情况。我应该删除所有 ( image , ground truth ) 对吗?CT 图像是体积图像。因此,当我的模型预测新测试集中的分割时,它还应该检测其中没有所需对象的图像。如果有人在这方面指导我,我将不胜感激。
数据集:https ://www.doc.ic.ac.uk/~rkarim/la_lv_framework/wall/index.html
vtk - 医疗应用推荐框架
我正在为医学可视化和交互编写一个更大的应用程序的启动过程。我正在考虑选择哪个管道。
MITK:以 ITK 为核心。算法继承自itk::Process
和对象继承自itk::Object
观察者等。
Slicer:以VTK为核心。算法继承自vtk::vtkAlgorithm
,对象继承自vtk::Object
。
有人对这两个框架都有经验吗?优点和缺点。
提前致谢
python - 如何在闭合曲线的质心上找到最小/最大轴长度
我正在做一个分割任务。现在我成功分割了感兴趣的区域并找到了该区域的轮廓。如何计算轮廓的最小/最大轴长度?轴不必是正交的。
我已经得到的是:轮廓上点的坐标。轮廓的质心。
我已经尝试过的:我找到了轮廓的拟合椭圆。然而,拟合椭圆只能找到可能不是穿过质心的最小或最大长度的正交轴。
python - 将患者坐标转换为 DICOM 图像的体素坐标
我有一个关于将患者坐标转换voxel coordinates
为3D MRI point cloud
从DICOM
. 我有一个从 2D MRI 图像获得的 3D 点云文件,这些点位于患者坐标系中。我正在尝试将云中的这些点转换为voxel coordinates
使用我最初创建的仿射矩阵的逆矩阵。但是我拥有的仿射矩阵是奇异的,因此我不能直接对其应用反函数。有没有办法在不对仿射矩阵应用反函数的情况下构造逆仿射矩阵?或者有没有其他方法可以实现这种转换?我也尝试从仿射矩阵中获取伪逆矩阵,但我不确定这是否会有所帮助。
我在Python 3.7
. 仿射矩阵的形状是(160, 4, 4)
,伪逆矩阵的形状也是(160, 4, 4)
,点云数组的形状是(2086604, 4)
。
要转换为体素坐标,数组的代码和结果形状如下:
理想情况下,我希望得到以下形状的数组:(160, 4, 4)
而不是(160, 4, 2086604)
你们中的任何人都可以帮我解决这个问题吗?