图像配准的技术在医学影像中的应用十分的广泛,在疾病分析的多模态合成中都是必不可少的手段。今天我们就来看看它是如何工作的吧!
图像配准方法寻求将两幅相同场景的图像加以对准。例如,将两幅或者更多幅大致在同一时间拍摄但由不同设备完成的图像对准,如一幅 MRI (磁共振成像)扫描图像,一幅PET (正电子发射成像)扫描图像。或者,图像可能是在不同时间用同一台设备采集的,如卫星图片或在同一指定地点相隔几天、几个月甚至几年时间采集的图像。无论是上述哪种情况,合并这些图像或者做定量的分析比较都需要对可能出现的几何误差进行补偿。导致这些误差出现的原因有很多,如摄像机的角度、距离和方向,物体位置的移动以及其他因素。
MATLAB工具箱支持以控制点为基础的图像配准。 控制点(也称为联结点),即在两幅图像中的位置已知或可以交互地选择的像素的一个子集。初看这句话可能难以理解,配合以下这张图理解起来就会比较好一点!
上图中:
(a)是具有控制点(叠加在图像上的小圆圈,在斑马线的左上角和右下角等处)的图像;
(b)是具有控制点的失真图像;
(c)是使用由控制点推导的投影变换后的校正图像。(这里的圆圈就是确定的控制点。)
一、实战
下图利用一种测试图案和这种图案的一个已经变歪的版本说明了控制点的概念。一旦选出了足够的有效控制点,就可以利用函数fitgeotrans(老版MATLAB中是cp2tform)去匹配一个指定了类型的空间变换,以便控制这些点。支持的空间变换类型已列下中。
这里我们来实战一下,将歪了的格子依据方正位置的格子图2来调整过来。
f2= checkerboard(40);%产生标准格子
f1= imrotate(f2,30);%产生歪了的格子
cpselect(f1,f2);
figure;
subplot(2,2,1),imshow(f1);title("配准前的图1");
subplot(2,2,2),imshow(f2);title("配准前的图2");
tform=fitgeotrans(movingPoints2,fixedPoints2,'nonreflectivesimilarity');
Iout=imwarp(f1,tform);
subplot(2,2,3),imshow(Iout);title("配准后的图1");
结果是:
大家可以看到经过fitgeotrans函数控制调整后歪了的图基本就变回来了。到这有的人可能会问:其中的控制点到底怎么选? 是手动输入吗?
小白的回答是:当然不是!大家仔细看代码中有一行cpselect(f1,f2)。此函数一出就会立马跳出一个只能控制点选择窗口。大家只需左右图轮着标定好对应的控制点就可以点击File—>输入到工作区就行了。然后就可以调用包含控制点的movingPoints,fixedPoints两参数了。相关图示如下。