基于SIFT点特征匹配的图像配准MATLAB程序

基于SIFT点特征匹配的图像配准MATLAB程序

这篇博客本来已经发表在本人另一账号下,由于之前那个账号不再使用,故把这篇博客搬到此处。

不当之处,请留言批评指正!

图像配准可定义为求取两幅相邻图像之间的空间变换和灰度变换的过程。对于给定的两幅图像 I1(x,y) I2(x,y) ,若 I1(x,y) 为基准图像,另一幅 I2(x,y) 为待配准图像,则图像变换公式为

I2(x,y)=g(I1(f(x,y)))

式中, f 为二维空间坐标变换; g 为一维灰度变换。

简单来说,图像配准就是把两幅图像上的点转换到同一个坐标系下。

图像配准基本步骤
这里写图片描述

同样,基于SIFT点特征的图像配准过程也包括特征提取特征描述特征匹配求解变换模型参数以图像变换配准

下面主要通过具体的例子来讲解基于SIFT点特征的图像配准,整个流程都用MATLAB代码实现了,其中基准图如下左图,待配准图为右图。
这里写图片描述


一、SIFT特征提取、特征描述

Lowe在2004年提出了一种基于尺度空间、对图像缩放、旋转甚至仿射变换保持不变的图像局部不变描述算子,即SIFT算子。具体的SIFT特征提取、特征描述可以阅读文献David G. Lowe, “Distinctive image features from scale-invariant keypoints,” International Journal of Computer Vision, 60, 2 (2004), pp. 91-110,这里就不做过多的讲解。

SIFT特征提取、特征描述的MATLAB实现函数可以直接使用Lowe所给的siftDemoV4例子中的sift实现。

% sift特征提取
[des1, loc1] = sift(gray1);
[des2, loc2] = sift(gray2);

其中,des为128维的描述子,loc为特征点的位置坐标,gray为输入的灰度图像。


二、SIFT特征粗匹配

SIFT粗匹配是通过欧氏距离测度来定义的,Lowe通过比较最近邻欧氏距离与次近邻欧氏距离的比值来进行匹配,当最近邻欧氏距离与次近邻欧氏距离的比值小于某个阈值时为匹配点,阈值一般取0.8。

SIFT粗匹配简单代码如下:

distRatio =0.8;
for i = 1 : size(des1,1)
   dotprods = des1(i,:) * des2t;        % Computes vector of dot products
   [vals,indx] = sort(acos(dotprods));  % Take inverse cosine and sort results

   % Check if nearest neighbor has angle less than distRatio times 2nd.
   if (vals(1) < distRatio * vals(2))
      match(i) = indx(1);
   else
      match(i) = 0;
   end
end

粗匹配结果如下图
这里写图片描述

很明显,这些匹配点中,存在许多误匹配点。


三、RANSAC精匹配以及变换模型参数估计

由于简单基于欧氏距离测度的SIFT特征匹配中存在许多误匹配的点,这些误匹配点将严重影响后面变换模型参数的解算,因此需要利用鲁棒估计的方法将这些误匹配的点剔除,在这里鲁棒估计我们使用最常规的RANSAC方法。

RANSAC(RANdom SAmple Consensus)随机抽样一致性是由Fischler于1981年引入的鲁棒方法,常用于大量点集处理,该方法的主要原理可以阅读pi9nc的这篇博客。

matlabR2013a版本以后,RANSAC精匹配以及变换模型参数估计可以由函数estimateGeometricTransform同时实现。

[T,inlierloc2_m,inlierloc1_m] = estimateGeometricTransform(loc2_m,loc1_m,'affine');

其中,输入值loc2_m为待配准图像粗匹配点坐标,loc1_m为基准图像粗匹配点坐标,’affine’为变换模型,图像配准一般选择仿射模型即可,当然这个函数也可以使用其它模型,具体参数输入可以使用MATLAB自带帮助文档;输出值T为变换模型参数矩阵,inlierloc2_m为待配准图像经过RANSAC以后精匹配点坐标,inlierloc1_m为基准图像精匹配点坐标。

精匹配结果如下图
这里写图片描述


四、图像变换

在获取图像变换参数矩阵之,利用该仿射变换参数以及图像插值,便可以将待配准图像转化到基准图像的坐标系下。

最后将待配准图像配准后与基准图进行拼接,拼接图如下:
这里写图片描述

由上图可以看出配准的效果还不错,从载入图像到最后的图像拼接在DELL7559笔记本上总共运行28s(图像大小600*600),计算效率还能加以改进。


基于SIFT和SURF点特征的图像配准MATLAB完整code可以在此下载,在MATLAB R2013a版本以上可行。

猜你喜欢

转载自blog.csdn.net/YunlinWang/article/details/77882503