这个例子展示了如何使用imregister
,模
和imwarp公司
自动对准两个体积数据集:CT图像,并从在不同的时间相同的患者采集的T1加权MR图像。不像其他一些技术,imregister
和模
找不到特征或使用控制点。基于强度的配准通常非常适合于医学和遥感图像。
本例中使用的三维CT和MRI数据集由迈克尔·菲茨帕特里克博士作为回顾性图像配准评估(RIRE)数据集.
本例使用同一患者头部的两个三维图像。在配准问题中,一幅图像是固定图像,另一幅图像是运动图像。配准的目的是使运动图像与固定图像对齐。在本例中,固定图像是T1加权的MRI图像。我们要注册的运动图像是CT图像。数据以回顾性图像注册评估(RIRE)项目使用的文件格式存储。使用多波段读取
读取包含图像数据的二进制文件。使用helperReadHeaderRIRE
函数获取与每个图像关联的元数据。您可以使用以下链接查找有关RIRE文件格式的更多信息:RIRE数据格式
fixedHeader=helperReadHeaderWire('rirePatient007MRT1.标题');movingHeader=helperReadHeaderRIRE('RIREPATIEN007号CT头');固定卷=多带读取('rirePatient007MRT1.bin',...[fixedHeader.行, fixedHeader.列, 固定页眉.切片],...'int16=>单曲',0,'bsq',“电气与电子工程师协会”);movingVolume=多波段读取('RIREPATIEN007号集装箱',...[移动标题行, 移动标题栏, 移动头。切片],...'int16=>单曲',0,'bsq',“电气与电子工程师协会”);
这个帮助解决方案
函数是帮助判断三维注册结果质量的辅助函数。可以交互旋转视图,两个轴将保持同步。
帮助卷注册(固定卷,移动卷);
你也可以使用图片对
从固定卷和移动卷查看单个平面,以了解卷的整体对齐方式。在重叠的图像中图片对
,灰色区域对应于具有相似强度的区域,而洋红和绿色区域显示一个图像比另一个图像亮的区域。使用图片对
观察通过每个卷的中心沿轴向切片拍摄的图像卷的错误配准。
centerFixed=大小(固定卷)/2;centerMoving=大小(移动卷)/2;图imshowpair(移动卷(:,:,中心移动(3)),固定卷(:,:,中心固定(3));标题('未注册的轴向切片')
这个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);
空间参考对象的属性定义了关联图像体积在世界坐标系中的位置以及每个维度中的像素范围。Rmoving的XWorldLimits属性定义移动体积在X维中的位置。PixelExtentInWorld属性以X维(沿列)中的世界单位定义每个像素的大小。在世界X坐标系下,运动体从0.3269扩展到334.97,每个像素的范围为0.6536mm。单位以毫米为单位,因为用于构造空间参照的标题信息以毫米为单位。ImageExtentInWorldX属性确定以世界单位表示的移动图像体积的完整范围(以世界单位表示)。
Rmoving.x世界限制
答复=1×2个0.3268 334.9674
Rmoving.PixelExtentInWorldX公司
ans=0.6536
移动图像扩展世界x
ANS = 334.6406
两个体积之间的不对中包括平移、缩放和旋转。使用相似性转换来注册图像。
从使用开始imregister
要获取可直接查看和观察的已注册输出图像卷,以访问注册结果的质量。
为优化器的InitialRadius属性指定一个非默认设置,以在注册结果中获得更好的收敛性。
优化器.InitialRadius=0.004;movingRegisteredVolume=imregister(移动卷,Rmoving,固定卷,Rfixed,“刚性”,优化器,度量);
使用图片对
再次重复检查穿过注册卷中心的轴向切片的对齐过程,以了解注册的成功程度。
图imshowpair(movingRegisteredVolume(:,:,centerFixed(3)),fixedVolume(:,:,centerFixed(3));标题(“注册量的轴向切片”)
从上面的轴向切片来看,看起来注册成功了。使用帮助解决方案
再次查看注册量,继续判断注册是否成功。
帮助卷注册(固定卷,移动注册卷);
这个模
当您对使用的几何变换估计感兴趣时,可以使用函数imregister
以形成已注册的输出图像。模
使用与imregister
并采用与imregister
. 由于目视检查产生的体积imregister
表示注册成功,您可以致电模
使用相同的输入参数来获取与此注册结果关联的几何变换。
geometform=imregtform(移动卷、Rmoving、固定卷、Rfixed,“刚性”,优化器,度量)
geometform=affine3d,属性:维度:3 T:[4x4 double]
imregtform的结果是一个几何变换对象。这个对象包含一个定义三维仿射变换矩阵的属性T。
几何形态
答复=4×4个0.9704-0.0143-0.2410 0.0228 0.9992 0.0324 0.2404-0.0369 0.9700-15.8648-17.5692 29.1830 1.0000
几何变换的transformpoints前向方法可用于确定作为配准结果的运动图像中的点[u,v,w]在哪里。由于空间参考输入被指定为imregtform,几何变换将世界坐标系中的点从移动映射到固定。下面使用transformPointsForward方法确定运动图像中心在世界坐标系中的变换位置。
centerXWorld=平均值(Rmoving.x世界限制);centerYWorld=平均值(移动世界范围);centerZWorld=平均值(Rmoving.ZWorldLimits公司);[xWorld,yWorld,zWorld]=前方的转换点(geometform,centerXWorld,centerYWorld,centerZWorld);
可以使用Rfixed的worldToSubscript方法确定与移动体积中心对齐的固定体积的元素。
[r,c,p]=worldToSubscript(Rfixed,xWorld,yWorld,zWorld)
r=116
c=132
p=13
这个imwarp公司
函数可用于将imregtform的几何变换估计应用于三维体。“OutputView”名称/值用于定义空间引用参数,该参数确定输出重采样图像的世界限制和分辨率。你可以产生相同的结果imregister
通过使用与固定图像相关联的空间参考对象。这产生一个输出量,其中所述固定的和运动图像的世界范围和分辨率是相同的。一旦两个卷的世界范围和分辨率是相同的,有像素的移动和固定体积的每个样本之间的像素对应关系。
movingRegisteredVolume = imwarp(movingVolume,Rmoving,geomtform,“双三次”,'输出视图',已固定);
再次使用imshowpair查看通过imwarp公司
.
图imshowpair(movingRegisteredVolume(:,:,centerFixed(3)),fixedVolume(:,:,centerFixed(3));标题(“注册量的轴向切片”)