RANSAC算法 [英] RANSAC Algorithm

查看:190
本文介绍了RANSAC算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以告诉我如何使用RANSAC算法在两个具有一定重叠部分的图像中选择共同的特征点吗?问题来自基于特征的图像拼接。


< img src =https://i.stack.imgur.com/s9E6D.jpgalt =alt text>

Can anybody please show me how to use RANSAC algorithm to select common feature points in two images which have a certain portion of overlap? The problem came out from feature based image stitching.

推荐答案

<几年前我实施了一个图像拼接器。维基百科上关于RANSAC的文章很好地描述了一般算法。

I implemented a image stitcher a couple of years back. The article on RANSAC on Wikipedia describes the general algortihm well.

当使用RANSAC进行基于特征的图像匹配时,你想要的是找到最能转换第一个图像的变换到第二张图片。这将是维基百科文章中描述的模型。

When using RANSAC for feature based image matching, what you want is to find the transform that best transforms the first image to the second image. This would be the model described in the wikipedia article.

如果您已经获得了两个图像的功能,并且发现第一个图像中哪些功能最匹配第二个图像中的哪些功能,那么RANSAC将使用类似这样的功能。

If you have already got your features for both images and have found which features in the first image best matches which features in the second image, RANSAC would be used something like this.

The input to the algorithm is:
n - the number of random points to pick every iteration in order to create the transform. I chose n = 3 in my implementation.
k - the number of iterations to run
t - the threshold for the square distance for a point to be considered as a match
d - the number of points that need to be matched for the transform to be valid
image1_points and image2_points - two arrays of the same size with points. Assumes that image1_points[x] is best mapped to image2_points[x] accodring to the computed features.

best_model = null
best_error = Inf
for i = 0:k
  rand_indices = n random integers from 0:num_points
  base_points = image1_points[rand_indices]
  input_points = image2_points[rand_indices] 
  maybe_model = find best transform from input_points -> base_points

  consensus_set = 0
  total_error = 0
  for i = 0:num_points
    error = square distance of the difference between image2_points[i] transformed by maybe_model and image1_points[i]
    if error < t
      consensus_set += 1
      total_error += error

  if consensus_set > d && total_error < best_error
    best_model = maybe_model
    best_error = total_error

最终结果是变换最好将image2中的点转换为image1,这在拼接时非常符合您的要求。

The end result is the transform that best tranforms the points in image2 to image1, which is exacly what you want when stitching.

这篇关于RANSAC算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆