我正在尝试沿着轨迹获取 HU 值。使用 Matlab 在网格文件上计算目标坐标和该目标的切线(因此轨迹),给出一组 xyz 坐标和方向 vector (切线)。然后,我使用 ITK 在 C++ 中加载 dicom 文件(从中提取网格,但不是用于获取网格的二进制掩码本身)。然后,我使用函数 image->TransformPhysicalPointToIndex(point, pixelIndex);
。我读取了目标的目标 x、y、z 坐标,并构造了一个 double[3] vector ,其坐标距目标每 0.02 毫米,直到距目标 2 毫米。当我调用函数 image->TransformPhysicalPointToIndex(point, pixelIndex);
时,它总是返回 false,因为点不在图像中。
因此,在默认值之后,我将图像的原点更改为元数据中带有标签 (0020|0032) Image Position (Patient) = -3.125-12\13.125 的值。
有了这个,所有的物理点都在图像中,但 HU 值是错误的(像素索引在左上角,而不是右下角)。 任何人都可以让我知道完成此任务需要遵循的步骤吗?
最佳答案
你可以反转ImageDirections ,通过将每个行 vector 乘以 -1。但是您还需要将原点移动到右下角以保持物理图像范围相同。
关于c++ - 使用 ITK 将物理点转换为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908745/