主要内容

注册多模态3-D医学图像

这个例子展示了如何使用基于强度的配准自动对齐两个体积图像。

在配准问题中,考虑一个图像是固定图像,另一个图像是运动图像。配准的目标是使运动图像与固定图像对齐。这个例子使用了两种方法来自动对齐体积图像:

  • 直接使用注册映像imregister

  • 估计将运动图像映射到固定图像所需的几何变换,然后使用imwarp

不像其他技术,imregister而且imregtform不要寻找特性或使用控制点。基于强度的登记通常非常适合于医疗和遥感图像。

加载图片

本例使用同一患者在不同时间采集的CT图像和T1加权MR图像。三维CT和MRI数据集由Michael Fitzpatrick博士作为一部分回顾性图像配准评估(RIRE)数据集

这个例子将MRI图像指定为固定图像,将CT图像指定为移动图像。数据以回顾性图像配准评估(RIRE)项目使用的文件格式存储。使用multibandread读取包含图像数据的二进制文件。使用helperReadHeaderRIRE函数获取与每个图像关联的元数据。

fixedHeader = helperReadHeaderRIRE(“rirePatient007MRT1.header”);movingHeader = helperReadHeaderRIRE(“rirePatient007CT.header”);fixedVolume = multibandread(“rirePatient007MRT1.bin”...[fixedHeader.Rows, fixedHeader.Columns fixedHeader.Slices),...“int16 = >单”0,“bsq”“ieee-be”);movingVolume = multibandread(“rirePatient007CT.bin”...[movingHeader.Rows, movingHeader.Columns movingHeader.Slices),...“int16 = >单”0,“bsq”“ieee-be”);

helperVolumeRegistration函数是一个辅助函数,用于帮助判断三维注册结果的质量。您可以交互地旋转视图,两个轴将保持同步。

图helperVolumeRegistration (fixedVolume movingVolume);

你也可以使用imshowpair从固定和移动的体块中观察单个平面,以获得体块整体对齐的感觉。在重叠的图像中imshowpair,灰色区域对应的区域有相似的强度,而品红和绿色区域显示的地方,一个图像比另一个更亮。使用imshowpair观察通过每个体的中心沿轴向切片拍摄的图像体的错配。很明显,图像具有不同的空间引用信息,如不同的世界界限和像素范围。

centerFixed = size(fixedVolume,3)/2;centerMoving = size(movingVolume,3)/2;图imshowpair(movingVolume(:,:,centerMoving),fixedVolume(:,:,centerFixed))“未配位轴片”

您可以通过合并空间引用信息来改进显示和注册结果。对于这些数据,CT和MRI数据集的分辨率在图像元数据中定义。使用此元数据进行创建imref3d空间引用对象。

Rfixed = imref3d(size(fixedVolume),fixedHeader.PixelSize(2),...fixedHeader.SliceThickness fixedHeader.PixelSize (1))
Rfixed = imref3d with properties: XWorldLimits: [0.6250 320.6250] YWorldLimits: [0.6250 320.6250] ZWorldLimits: [2 106] ImageSize: [256 256 26] PixelExtentInWorldX: 1.2500 pixelextentinworlddy: 1.2500 PixelExtentInWorldZ: 4 ImageExtentInWorldX: 320 imageextentinworlddy: 320 ImageExtentInWorldZ: 104 XIntrinsicLimits: [0.5000 256.5000] YIntrinsicLimits: [0.5000 256.5000] ZIntrinsicLimits: [0.5000 26.5000]
Rmoving = imref3d(size(movingVolume),movingHeader.PixelSize(2),...movingHeader.SliceThickness movingHeader.PixelSize (1))
Rmoving = imref3d with properties: XWorldLimits: [0.3268 334.9674] YWorldLimits: [0.3268 334.9674] ZWorldLimits: [2 114] ImageSize: [512 512 28] PixelExtentInWorldX: 0.6536 pixelextentinworlddy: 0.6536 PixelExtentInWorldZ: 4 ImageExtentInWorldX: 334.6406 imageextentinworlddy: 334.6406 ImageExtentInWorldZ: 112 XIntrinsicLimits: [0.5000 512.5000] YIntrinsicLimits: [0.5000 512.5000] ZIntrinsicLimits: [0.5000 28.5000]

空间引用对象的属性定义了相关图像体积在世界坐标系中的位置以及每个维度的像素范围。的XWorldLimits的属性Rmoving定义移动体在X维中的位置。的PixelExtentInWorld属性定义了X维世界单位中每个像素的大小(沿着列)。移动体积在世界X坐标系中从0.3269到334.97 mm,每个像素的范围为0.6536 mm。单位以毫米为单位,因为用于构建空间引用的标题信息是以毫米为单位的。的ImageExtentInWorldX属性决定了世界单位中运动图像体积的完整程度。

方法1:使用imregister

imregister函数使您可以获得一个注册输出图像卷,您可以直接查看和观察,以访问注册结果的质量。

选择要使用的正确优化器和指标配置imregister通过使用imregconfig函数。这两张图像来自两种不同的方式,核磁共振成像和CT,所以“多通道”选项是合适的。的值InitialRadius属性,以在注册结果中实现更好的收敛。

[optimizer,metric] = imregconfig(“多通道”);优化器。InitialRadius = 0.004;

两个卷之间的错位包括平移和旋转,因此使用刚性变换来配准图像。指定空间引用信息,以便算法使用imregister会更快地收敛到更好的结果。

movingRegisteredVolume = imregister(movingVolume,Rmoving,...fixedVolume Rfixed,“刚性”优化器,指标);

显示通过已注册卷中心拍摄的轴向切片,以了解注册的成功程度。配准过程除了对准图像外,还调整运动图像的空间参考信息,使其与固定图像一致。图像现在大小相同,并成功对齐。

图imshowpair (movingRegisteredVolume (:,:, centerFixed),...fixedVolume (:,:, centerFixed));标题(“注册体轴向切片”

使用helperVolumeRegistration再次查看注册量,继续判断注册是否成功。

helperVolumeRegistration (fixedVolume movingRegisteredVolume);

方法2:估计和应用三维几何变换

imregister函数注册图像,但不返回应用于运动图像的几何变换的信息。当你对估计的几何变换感兴趣时,你可以使用imregtform函数获取存储有关转换信息的几何转换对象。imregtform使用相同的算法imregister并接受相同的输入参数imregister

tform = imregtform(movingVolume,Rmoving,fixedVolume,Rfixed,...“刚性”、优化、指标)
tform = rigidtform3d与属性:维度:3 R: [3×3 double]翻译:[-15.8648 -17.5692 29.1830]A: [4×4 double]

房地产一个定义用于将运动图像与固定图像对齐的3-D仿射变换矩阵。

tform。一个
ans =4×40.9704 0.0228 0.2404 -15.8648 -0.0143 0.9992 -0.0369 -17.5692 -0.2410 0.0324 0.9700 29.1830 000 1.0000

transformPointsForward函数可以用来确定一个点[u,v,w]在运动图像映射的位置作为配准的结果。因为空间引用的输入被指定为imregtform,几何变换将世界坐标系中的点从移动映射到固定。的transformPointsForward函数用于确定运动图像的中心在世界坐标系中的转换位置。

centerXWorld = mean(remove . xworldlimits);centerYWorld = mean(删除。yworldlimits);centerZWorld = mean(remove . zworldlimits);[xWorld,yWorld,zWorld] = transformPointsForward(tform,...centerXWorld、centerYWorld centerZWorld);

您可以使用worldToSubscript函数确定固定体积中与移动体积中心对齐的元素。

[r,c,p] = worldToSubscript(Rfixed,xWorld,yWorld,zWorld)
R = 116
C = 132
P = 13

应用几何变换估计imregtform到3-D卷使用imwarp函数。“OutputView”名称-值参数用于定义空间引用参数,该参数确定输出重采样图像的世界限制和分辨率。你可以得到相同的结果imregister通过使用与固定图像相关联的空间引用对象。这将创建一个输出量,其中固定和移动图像的世界限制和分辨率是相同的。一旦两个体积的世界极限和分辨率相同,移动和固定体积的每个样本之间就有像素到像素的对应关系。

movingRegisteredVolume = imwarp(movingVolume,Rmoving,tform,...“双三次的”OutputView = Rfixed);

通过所生成的注册卷的中心查看轴向切片imwarp

图imshowpair (movingRegisteredVolume (:,:, centerFixed),...fixedVolume (:,:, centerFixed));标题(“注册体轴向切片”

另请参阅

||||