1、图像匹配研究配准进两年的时间,有幸看到一个技术文档,做了一下的总结,如有不妥之处敬请大家谅解,多提出意见废话不多说,书归正传!这里主要讲解的是多模态或者说是多序列MRI图像配准。采用的图片是人体膝盖图。配准暂且分为五部Step1.下载图片Step2.初始配准(粗配准)Step3.提高配准精度Step4.利用初始条件提高配准精度配准Step5.结果满意不满意,你说了算下面一一详细说明以上几个步骤!一,下载图片这里采用的图片是matlab子带的两张MR膝盖图,“knee1.dcm”作为参考图像,knee2.dcm为浮动图像!Plain Text code?12fixed=dicomread(kne
2、e1.dcm);%读参考图像fixedmoving=dicomread(knee2.dcm);%读浮动图像moving可能接下来大家关注的问题就是这两幅图像到底有什么区别,这种区别又有多大的可视化程度,下面就为推荐两个比较好用的函数用于观测两幅图像的区别。Plain Text code?12figure,imshowpair(moving,fixed,method);title(Unregistered);imshowpair函数就是指以成双成对的形式显示图片,其中一个重要的参数就是method,他又4个选择(1)falsecolor字面意思理解就是伪彩色的意思了,其实就是把两幅图像的差异用色
3、彩来表示,这个是默认的参数。(2)blend这是一种混合透明处理类型,技术文档的翻译是alphablending,大家自己理解吧。(3)diff这是用灰度信息来表示亮度图像之间的差异,这是对应falsecolor的一种方式。(4)参数monotage可以理解成蒙太奇,这是一种视频剪辑的艺术手法,其实在这里我们理解成拼接的方法就可以了。为什么在这里罗里吧嗦的说这么多的显示呢,大家知道人靠衣装,美靠.(就不多说了吧),总之就是一个好的视觉效果能给人以耳目一新的效果。嗯嗯,这个就是蒙太奇的效果了,这两个则分别是伪彩色,混合透明处理了,至于大家接受那个就要看自己的爱好了说到了这里终于结束了这关没有意义
4、的读图环节,请大家原谅我的无耻吧。二,初始配准(粗配准)初始配准就是大致的使图像对其,使其差别不要太明显,以方便下一步的精细配准环节。函数imregconfig这在个环节可是主角,从名字上看就知道他要设置一些参数和方法了,其实他真正的作用是配置优化器和度量准则,Plain Text code?1optmizer,metric=imregconfig(modality);参数modality指定fixedimage,movingimage之间的关系,有两种选择monomodal,multimodal两种,分别质量两幅图像是单一模态还是多模态,根据需要自己选择。返回的参数optimizer是用于优
5、化度量准则的优化算法,这里有registration.optimizer.RegularStepGradientDescent或者registration.optimizer.OnePlusOneEvolutionary两种可供选择。输出参数metric则是注明了度量两幅图片相似度的方法,提供了均方误差(registration.metric.MeanSquares)和互信息(registration.metric.MattesMutualInformation)两种供选择。当然大家也可以根据结构扩充这两个参数。到这里优化器和度量准别就已将做好了,是不是简单到没朋友。要上大菜了,配准代码Pla
6、in Text code?123movingRegisteredDefault=imregister(moving,fixed,affine,optimizer,metric);figure,imshowpair(movingRegisteredDefault,fixed);title(A:Defaultregistration);imregister函数根据取得的optimizer,metric参数对2D,3D参考图像做变换(transform)目的是fixed,movingimage对其,大家关注到有一个参数affine,他是指该变化是仿射变换,同样该参数还可以选为translation(
7、x,y)坐标平移变换,不牵涉到旋转个尺度变换rigid刚性变换(平移和旋转)similarity改变换包括了平移,旋转和尺度变换affine在similarity的基础上加入了shear(图像的剪辑)该图片就是粗配准的结果了,大家可以在右上角看到明显的不重合现象。三,提高配准精度粗配准的结果一般情况下达不到实际应用的要求,为此很有必要进一步提高精度,如果有对精度要求不高的朋友看到这里就可以结束了。Plain Text code?12disp(optimizer);disp(metric);这两条指令可以看到默认生成的优化器和度量函数参数,当然这里提高精度的途径就是通过修改这两个参数了!在这里我
8、们通过修改两个参数,观察对配准效果的改进:(1)改变优化器的步长已达到对更加精细的变换。Plain Text code?1234optimizer.InitialRadius=optimizer.InitialRadius/3.5;movingRegisteredAdjustedInitialRadius=imregister(moving,fixed,affine,optimizer,metric);figure,imshowpair(movingRegisteredAdjustedInitialRadius,fixed);title(AdjustedInitialRadius);把原步长缩
9、小为原来的3.5倍,结果如下貌似效果还是有点的啊,大家在看右上角的阴影好像不见了(2)在(1)基础上改变最大迭代次数Plain Text code?1234optimizer.MaximumIterations=300;movingRegisteredAdjustedInitialRadius300=imregister(moving,fixed,affine,optimizer,metric);figure,imshowpair(movingRegisteredAdjustedInitialRadius300,fixed);title(B:AdjustedInitialRadius,Maxi
10、mumIterations=300,AdjustedInitialRadius.);效果如下:正上的阴影好像也减小了四,改变初始条件提高精度这里的思想就像我们在做雕塑一样,假如我们要用石头雕一个人,首先我们可以大刀阔斧的把头部留出来,然后把脖子留的比头部更细,简单的说就是美女留出S轮廓,或者o型的(哈哈,对号入座就可以了),下一步精雕细琢的时候就会轻松很多,这里的初始条件就是先用简单的变换做出一个初始配准图像,然后以初始配准的结果作为输入做精细配准。大致做法如下:Plain Text code?1tformSimilarity=imregtform(moving,fixed,similarit
11、y,optimizer,metric);用similarity的变换方式做初始配准,或者你还可以用rigid,transform的方式都可以Plain Text code?1tformSimilarity=imregtform(moving,fixed,similarity,optimizer,metric);在这里imregtform把变化矩阵输出;然后用imref2d限制变换后的图像与参考图像有相同的坐标分布Plain Text code?1Rfixed=imref2d(size(fixed);imwarp函数执行几何变换,当然依据则是tformSimilarity的变换矩阵了。Plain
12、 Text code?123movingRegisteredRigid=imwarp(moving,tformSimilarity,OutputView,Rfixed);figure,imshowpair(movingRegisteredRigid,fixed);title(C:Registrationbasedonsimilaritytransformationmodel.);得到的tformsimilarity.T就是传说中的变换矩阵了tformSimilarity.T=1.0331-0.111000.11101.03310-51.14916.98911.0000下面就是精配准的部分了:P
13、lain Text code?1234movingRegisteredAffineWithIC=imregister(moving,fixed,affine,optimizer,metric,.InitialTransformation,tformSimilarity);figure,imshowpair(movingRegisteredAffineWithIC,fixed);title(D:Registrationfromaffinemodelbasedonsimilarityinitialcondition.);初始配准结果:进一步精细配准:五,到这里就是你说了算了DecidingWhen
14、EnoughisEnoughPlain Text code?123456789101112131415figureimshowpair(movingRegisteredDefault,fixed)title(A-Defaultsettings.);figureimshowpair(movingRegisteredAdjustedInitialRadius,fixed)title(B-AdjustedInitialRadius,100Iterations.);figureimshowpair(movingRegisteredAdjustedInitialRadius300,fixed)title(C-AdjustedInitialRadius,300Iterations.);figureimshowpair(movingRegisteredAffineWithIC,fixed)title(D-Registrationfromaffinemodelbasedonsimilarityinitialcondition.);选择一个合适的,理想的你想要的结果,去飞去装逼吧。更多4
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2