12

RANSAC アルゴリズムを使用して、特定の部分が重複している 2 つの画像の共通の特徴点を選択する方法を教えてください。問題は、機能ベースの画像スティッチングから発生しました。
代替テキスト 代替テキスト

4

1 に答える 1

22

数年前に画像スティッチャーを実装しました。ウィキペディアの RANSAC に関する記事では、一般的なアルゴリズムがよく説明されています。

特徴ベースの画像マッチングに RANSAC を使用する場合、必要なのは、最初の画像を 2 番目の画像に最適に変換する変換を見つけることです。これは、ウィキペディアの記事で説明されているモデルです。

両方の画像の特徴を既に取得しており、最初の画像のどの特徴が 2 番目の画像のどの特徴に最もよく一致するかがわかっている場合、RANSAC は次のように使用されます。

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

最終結果は、イメージ 2 のポイントをイメージ 1 に最適に変換する変換です。これは、ステッチ時に必要なものです。

于 2011-01-12T07:16:42.060 に答える