Matlab 具有不同像素大小的两幅图像之间的插值

Matlab 具有不同像素大小的两幅图像之间的插值,matlab,interpolation,dicom,medical,Matlab,Interpolation,Dicom,Medical,对于我的应用程序,我想在两个图像之间进行插值(CT到PET)。 因此,我在它们之间映射如下: [X,Y,Z] = ndgrid(linspace(1,size(imagedata_ct,1),size_pet(1)),... linspace(1,size(imagedata_ct,2),size_pet(2)),... linspace(1,size(imagedata_ct,3),size_pet(3))); new_image

对于我的应用程序,我想在两个图像之间进行插值(CT到PET)。 因此,我在它们之间映射如下:

[X,Y,Z] = ndgrid(linspace(1,size(imagedata_ct,1),size_pet(1)),...
                linspace(1,size(imagedata_ct,2),size_pet(2)),...
                linspace(1,size(imagedata_ct,3),size_pet(3)));
new_imageData_CT=interp3(imagedata_ct,X,Y,Z,'nearest',-1024);
我的新图像的大小与PET图像相似。问题是我的新图像的数据缩放不正确。所以它被压缩了。我认为这是因为两幅图像之间的像素大小不同,不涉及插值。例如:

  • CT图像大小:512x512x1027
  • CT体素大小[mm]:1.5x1.5x0.6
  • PET图像大小:192x126x128
  • PET体素大小[mm]:2.6x2.6x3.12
那么,我怎样才能考虑插值的体素大小呢?

我会让其他人回答这个问题,但我认为你问错了。当然,我缺乏背景知识,但乍一看,Matlab不是这项工作的合适工具

  • 请看一看(带有python包装器的C++库)和“”文章
  • Try(它有一个用于上一个工具的GUI)
  • 尝试(类似,重点是脑部扫描)

完成该注册步骤后,您可以导出生成的图像(现在大小和间距相同),并根据需要(或使用相同的工具)在Matlab中继续插值。

您需要在患者坐标系中执行匹配,但是要考虑的不仅仅是分辨率和体素大小。您需要同步两个卷的位置(可能还有方向,但这不太可能)

了解哪些DICOM标签描述了体积,以及如何计算用于在患者(x、y、z单位为毫米)和体积(x、y、z单位为列、行、切片编号)之间进行转换的转换矩阵,可能会对您有所帮助

你必须确保体积位置是可比较的,因为CT和PET中切片的位置不一定指同一原点。简单的方法是比较CT和PET切片的DICOM属性参考帧UID(0020052)。对于共享相同参考框架UID的所有切片,DICOM标头中切片的位置引用相同的原点。 如果数据集不包含此标记,那么将非常困难,除非您将其作为一种假设。有一些方法可以从被称为“配准”的像素数据的内容中推断出两个不同体积的匹配切片,但这是一门独立的科学。请参阅Hugues Fontenelle的链接

顺便说一句:在你的例子中,你不会在每个位置的两个体积中找到匹配的体素,因为体积的大小不同。例如,对于x方向:

CT:512*1.5=768毫米


PET:192*2.6=499毫米

切片机中有一个称为PETCTFUSION的工具箱,它将PET扫描与CT图像对齐。 您可以在slicer新版本中安装它。 在如下所示的模块显示面板中,提供了为PET数据集选择着色方案的选项: 灰色将提供白色到黑色的着色,黑色表示最高的计数值。 热量将提供一个温暖的色阶,暗红色最低,白色最高。 光谱将提供一个温暖的色阶,在低计数端变冷(深蓝色),在最高计数端变白。 该面板还提供了调整PET和CT体积的窗口和水平的方法

我通常在注册后使用重新采样工具。您可以在软件包中找到它:注册,然后对图像重新采样

请看下面的屏幕:

如果您想了解更多关于PETCTFUSION的信息,请访问以下链接:

因为切片器与python兼容,所以您也可以使用python交互器来运行自己的代码

如果您遇到任何问题,请告诉我

是的,“同步位置”是描述图像处理术语中所谓的图像注册的一个好方法。