3

我目前正在使用 DICOM-RT 文件(其中包含 DICOM 以及剂量输送数据和结构集文件)。我主要对“结构集”文件(即 RTSS.dcm)感兴趣,它包含感兴趣的 ROI 的轮廓点集。特别地,轮廓点围绕肿瘤体积。例如,一个肿瘤将有一组 5 个轮廓,每个轮廓是一组围绕该肿瘤切片的点。

我正在尝试使用 MatLab 使用这些轮廓点在二进制 3D 矩阵(0 = 非肿瘤,1 = 肿瘤)中构建肿瘤体积,并且需要帮助。

一种可能的方法是将每个轮廓集填充为二进制切片,然后在切片之间插入体积。到目前为止,我已经使用填充补丁功能来创建每个轮廓切片的二进制横截面,但是我很难弄清楚如何将这些二进制切片插入到 3D 体积中。没有一个内置函数似乎适用于这个特定问题(尽管也许我只是用错了?)。一个简单的线性插值似乎也不合适,因为一个轮廓的边缘应该在所有方向上融入相邻的轮廓。

另一种选择是获取点并对其进行镶嵌(不先制作切片)。但是,我不知道如何使 MatLab 仅对肿瘤表面进行镶嵌,而不与肿瘤体积相交。目前,它似乎在肿瘤内发现了三角形。如果我能把它变成一个表面,我也不知道如何把它转换成二进制 3D 矩阵体积。

有没有人有可能适用于此处的 3D 切片插值或镶嵌技术的经验?或者可能存在任何相关的工具包?我被困住了... :(

我也对其他语言的方法持开放态度:我对 C# 和 Python 有点熟悉,尽管我认为 MatLab 会更容易处理矩阵运算。

提前致谢!

4

3 回答 3

3

我不确定您从哪个程序导出 dicom-rt 结构文件,但我相信我为您找到了一个更优雅的解决方案,已经在 Insight 期刊的开源软件(GDCM、CMake、ITK)中进行了描述文章。

我正在与我们的一位物理学家讨论类似的问题,我们看到了您的解决方案。如果您尝试二值化的任何结构都没有凹面,那很好,但如果是这样,它们将被不准确地渲染。

此方法已针对来自 Eclipse 和 Masterplan 的 dicom-rt 结构集进行了验证。希望能帮助到你。

http://www.midasjournal.org/download/viewpdf/701/4

于 2011-11-04T22:18:55.897 回答
1

我想我在另一篇文章(这里)中找到了答案。与其尝试在定义的轮廓之间插入“缺失切片”,不如将轮廓点视为点云并找到凸包可能是一种更有效的方法。这种方法创建了我所追求的二进制 3D 体积。

这是我使用的代码,希望对需要使用 DICOM-RT 文件的人有所帮助:


    function mask = DicomRT2BinaryVol(file)
    points = abs(getContourPoints(file));

    %%NOTE: The getContourPoints function simply reads the file using
    %%'dicominfo' method and organizes the contour points into an n-by-3
    %%matrix, each column being the X,Y,Z coordinates.

    DT = DelaunayTri(points);
    [X,Y,Z] = meshgrid(1:50,1:50,1:50);
    simplexIndex = pointLocation(DT, X(:), Y(:), Z(:));
    mask = ~isnan(simplexIndex);
    mask = reshape(mask,size(X));
    end

此方法是@gnovice 在上面链接中发布的方法的略微修改版本。

于 2011-03-16T21:15:39.707 回答
0

iTk 是处理这类事情的优秀库:http ://www.itk.org/ HTH

于 2011-03-15T19:09:24.603 回答