Question

Quelqu'un peut-il me montrer comment s'il vous plaît utiliser l'algorithme RANSAC pour sélectionner des points de caractéristique commune dans deux images qui ont une certaine partie de chevauchement? Le problème est sorti de couture d'image à base de fonction.
text alt text alt

Était-ce utile?

La solution

Je mis en œuvre une image piqueuse quelques années. L'article sur Wikipédia RANSAC décrit bien le algortihme général.

Lors de l'utilisation RANSAC pour la correspondance d'image à base de fonction, ce que vous voulez est de trouver le meilleur que transform transforme la première image à la seconde image. Ce serait le modèle décrit dans l'article de wikipedia.

Si vous avez déjà vos fonctions pour les images et ont trouvé qui figure dans la première image correspond le mieux qui figure dans la deuxième image, RANSAC serait quelque chose utilisé comme celui-ci.

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

Le résultat final est la transformation que les meilleurs TRANFORMS points dans image2 à image1, qui est exacly ce que vous voulez lors de la couture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top