这个例子展示了如何自动对齐两个容积图像使用灰度登记。
这个示例使用imregister
,imregtform
和imwarp
自动对齐两个体积数据集:CT图像和T1加权图像收集先生从同一病人在不同的时间。与其他技术,imregister
和imregtform
找不到功能或使用控制点。灰度登记通常适合于医疗和遥感图像。
这个示例中使用的3 d CT和MRI数据集提供的迈克尔·菲茨帕特里克博士作为的一部分回顾性图像配准评估(RIRE)数据集。
这个例子使用了两个三维图像相同的病人的头部。在登记的问题,我们认为一个图像是固定的图像和其他图像移动图像。登记的目的是使移动图像与固定形象。在这个例子中,固定的图像是T1加权磁共振图像。我们想注册的移动图像CT图像。数据存储在使用的文件格式回顾性图像配准评估(RIRE)项目。使用multibandread
包含图像数据的读取二进制文件。使用helperReadHeaderRIRE
函数来获取与图像相关联的元数据。你可以使用以下链接来找到更多的信息关于RIRE文件格式:RIRE数据格式。
fixedHeader = helperReadHeaderRIRE (“rirePatient007MRT1.header”);movingHeader = helperReadHeaderRIRE (“rirePatient007CT.header”);fixedVolume = multibandread (“rirePatient007MRT1.bin”,…[fixedHeader。行,fixedHeader。列,fixedHeader.Slices),…“int16 = >单”0,“bsq”,“ieee-be”);movingVolume = multibandread (“rirePatient007CT.bin”,…[movingHeader。行,movingHeader。列,movingHeader.Slices),…“int16 = >单”0,“bsq”,“ieee-be”);
的helperVolumeRegistration
函数是一个helper函数提供帮助法官3 d登记结果的质量。你可以交互式地旋转视图和两轴保持同步。
helperVolumeRegistration (fixedVolume movingVolume);
您还可以使用imshowpair
看个飞机从固定和移动卷卷的整体一致性。在重叠的图像imshowpair
灰色区域相对应,也有类似的强度,而红色和绿色区域显示一个图像比其它的地方。使用imshowpair
观察错误配准图像的卷沿着一个轴向片通过每个卷的中心。
centerFixed =大小(fixedVolume) / 2;centerMoving =大小(movingVolume) / 2;图imshowpair (movingVolume (:,:, centerMoving (3)), fixedVolume (:,:, centerFixed (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);
空间引用对象的属性定义相关的图像卷在世界坐标系统和每个维度的像素范围是什么。的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
登记产权优化器来实现更好的收敛结果。
优化器。InitialRadius = 0.004;movingRegisteredVolume = imregister (movingVolume Rmoving、fixedVolume Rfixed,“刚性”优化器,指标);
使用imshowpair
一遍又一遍重复的过程检查轴的对齐片采取通过注册中心卷的成功注册。
图imshowpair (movingRegisteredVolume (:,:, centerFixed (3)), fixedVolume (:,:, centerFixed (3)));标题(“注册体积轴向片”)
从上面的轴向片,你可以看到卷成功对齐。使用helperVolumeRegistration
再次查看注册体积继续判断的成功注册。
helperVolumeRegistration (fixedVolume movingRegisteredVolume);
的imregtform
函数可以使用当你感兴趣的几何变换估计使用imregister
形成了注册输出图像。imregtform
使用相同的算法imregister
和有相同的输入参数imregister
。目视检查以来产生的体积imregister
显示注册成功,您可以调用imregtform
相同的输入参数的几何转换与此登记相关的结果。
geomtform = imregtform (movingVolume Rmoving、fixedVolume Rfixed,“刚性”、优化、指标)
geomtform = affine3d属性:T: [4 x4的双重维度:3
的结果imregtform
是一个几何变换对象。这个对象包含一个属性,T
,定义了三维仿射变换矩阵。
geomtform.T
ans =4×40.9704 -0.0143 -0.2410 0.0228 0.9992 0.0324 0 0 -15.8648 -17.5692 29.1830 1.0000 0.2404 -0.0369 0.9700
的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
的imwarp
函数可以用于应用几何变换估计imregtform
一个3 d体积。的“OutputView”
名称参数用于定义一个空间引用参数,决定了世界范围和分辨率的输出图像重新取样。你可以产生相同的结果的imregister
通过使用空间引用对象相关的固定形象。这将创建一个输出音量的世界限制和决议的固定和移动图像是一样的。一旦世界限制和决议的数量是相同的,每个样本之间存在像素像素对应的移动和固定卷。
movingRegisteredVolume = imwarp (movingVolume Rmoving geomtform,“双三次的”,“OutputView”,Rfixed);
使用imshowpair
再次查看一个轴向片通过注册中心的体积产生的imwarp
。
图imshowpair (movingRegisteredVolume (:,:, centerFixed (3)), fixedVolume (:,:, centerFixed (3)));标题(“注册体积轴向片”)