主要内容

注册多模式三维医学图像

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

这个示例使用imregisterimregtformimwarp自动对齐两个容量数据集:同一患者在不同时间采集的CT图像和T1加权MR图像。与其他技术不同,imregisterimregtform不要寻找功能或使用控制点。基于强度的注册通常非常适合于医学和遥感图像。

本例中使用的三维CT和MRI数据集由迈克尔·菲茨帕特里克博士作为的一部分回顾性图像配准评估(RIRE)数据集

步骤1:加载图片

本例使用了同一患者头部的两张3d图像。在配准问题中,我们将一幅图像视为固定图像,另一幅图像视为运动图像。配准的目的是使运动图像与固定图像对齐。在本例中,固定图像是T1加权MRI图像。我们要配准的运动图像是CT图像。数据以回顾性图像配准评估(RIRE)项目使用的文件格式存储。使用multibandread读取包含图像数据的二进制文件。使用helperReadHeaderRIRE函数获取与每个图像关联的元数据。你可使用以下连结查阅更多有关RIRE档案格式的资料:RIRE数据格式

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

helperVolumeRegistration功能是提供帮助判断的3-d登记结果的质量的辅助功能。您可以交互旋转视图和两个轴将保持同步。

helperVolumeRegistration (fixedVolume movingVolume);

图包含2分轴的对象和类型uipanel的其他对象。轴对象1包含类型表面的3个对象。轴对象2包含类型表面的3个对象。

你也可以用imshowpair看看从固定和移动卷单一平面,以获得卷的总体定位感。在从图像重叠imshowpair在美国,灰色区域对应的是具有相似强度的区域,而品红和绿色区域显示的是其中一个图像比另一个图像更亮的地方。使用imshowpair观察图像体积的配准不良,通过沿着每个卷的中心截取的轴向切片。

centerFixed =尺寸(fixedVolume)/ 2;centerMoving =尺寸(movingVolume)/ 2;图imshowpair(movingVolume(:,:,centerMoving(3)),fixedVolume(:,:,centerFixed(3)));标题(“未登记的轴向片”

图包含一个轴对象。与标题未注册轴向切片轴对象包含类型图像的对象。

步骤2:设置初始注册

imregconfig功能可以很容易地选择正确的优化和度量配置与使用imregister.这两张图像来自两种不同的方式,MRI和CT,所以“多式联运”选项是合适的。

(优化器,度量)= imregconfig (“多式联运”);

所使用的算法imregister当指定了关于输入图像的分辨率和/或位置的空间参考信息时,将更快地收敛到更好的结果。在本例中,CT和MRI数据集的分辨率在图像元数据中定义。使用此元数据来构造imref3d作为注册输入参数传递的空间引用对象。

Rfixed = imref3d(大小(fixedVolume) fixedHeader.PixelSize (2), fixedHeader.PixelSize (1) fixedHeader.SliceThickness);Rmoving = imref3d(大小(movingVolume) movingHeader.PixelSize (2), movingHeader.PixelSize (1) movingHeader.SliceThickness);

空间引用对象的属性定义了相关图像体积在世界坐标系中的位置以及每个维度的像素范围。的XWorldLimits财产Rmoving定义了在X维度上的移动量的位置。的PixelExtentInWorld属性定义在X维度(沿着列)在世界单位的各像素的尺寸。运动体积延伸从0.3269到334.97毫米世界X坐标系统和每个像素具有0.6536毫米的程度。单位均为毫米,因为首标信息用于构造空间参考是毫米。的ImageExtentInWorldX属性确定世界单位的运动图像体积的完全程度。

Rmoving.XWorldLimits
ANS =1×20.3268 - 334.9674
Rmoving。PixelExtentInWorldX
ans = 0.6536
Rmoving.ImageExtentInWorldX
ans = 334.6406

两卷之间的错位包括平移,缩放和旋转。使用相似变换登记图像。

通过启动imregister以获得注册输出图像体积可以查看和直接观察来访问注册的结果的质量。

的非默认设置InitialRadius优化的性能,实现成果登记更好的收敛。

optimizer.InitialRadius = 0.004;movingRegisteredVolume = imregister(movingVolume,Rmoving,fixedVolume,Rfixed,“刚性”,优化器,度量);

使用imshowpair再次重复检查轴向切片的对齐过程,通过注册体的中心来了解注册的成功程度。

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

图包含一个轴对象。与注册卷标题轴向切片轴对象包含类型图像的对象。

从上面的轴向切片,你可以看到卷成功地对齐。使用helperVolumeRegistration再次查看注册体积继续判断注册成功。

helperVolumeRegistration(fixedVolume,movingRegisteredVolume);

图包含2分轴的对象和类型uipanel的其他对象。轴对象1包含类型表面的3个对象。轴对象2包含类型表面的3个对象。

步骤3:得到三维几何变换,对齐移动与固定。

imregtform函数可以用来当你对几何变换估计感兴趣的时候imregister以形成为注册的输出图像。imregtform使用相同的算法imregister并采取相同的输入参数作为imregister.由于目视检查所产生的体积imregister表示注册成功,可以呼叫imregtform使用相同的输入参数来获得与该配准结果相关联的几何变换。

geomtform = imregtform(movingVolume,Rmoving, fixedVolume,Rfixed,)“刚性”、优化、指标)
geomtform = affine3d与属性:T:[4×4双]维度:3

的结果imregtform是一个几何变换对象。该对象包含一个属性,T,这就定义了三维仿射变换矩阵。

geomtform。T
ANS =4×4.0.9704 -0.0143 -0.2410 0 0.0228 0.9992 0.0324 0 0.2404 -0.0369 0.9700 0 -15.8648 -17.5692 29.1830 1.0000

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

centerXWorld =意味着(Rmoving.XWorldLimits);centerYWorld =意味着(Rmoving.YWorldLimits);centerZWorld =意味着(Rmoving.ZWorldLimits);[xWorld, yWorld zWorld] = transformPointsForward (geomtform、centerXWorld centerYWorld, centerZWorld);

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

(r、c、p) = worldToSubscript (Rfixed、xWorld yWorld, zWorld)
r = 116
C = 132
p = 13

步骤4:应用几何变换估计的移动图像体积。

imwarp功能可以被用来从应用几何变换估计imregtform到3 d体积。的'OutputView'Name-value参数用于定义一个空间引用参数,该参数确定输出重采样图像的世界限制和分辨率。你可以得到相同的结果imregister利用与固定图像相关联的空间参考对象。这创建了一个输出量,其中世界限制和分辨率的固定和移动图像是相同的。一旦两个体积的世界限制和分辨率相同,移动体积和固定体积的每个样本之间就有像素对像素的对应关系。

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

使用imshowpair再次通过由产生的注册体积的中心,以查看一个轴向切片imwarp

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

图包含一个轴对象。与注册卷标题轴向切片轴对象包含类型图像的对象。

另请参阅

||||