Может ли кто-нибудь показать мне, как использовать алгоритм RANSAC для выбора общих характерных точек на двух изображениях, которые имеют определенную часть перекрытия? Проблема возникла из-за сшивания изображений на основе признаков.
Алгоритм RANSAC
comment
Ваш вопрос слишком расплывчатый. Что вы имеете в виду под перекрытием углов?
- person koan   schedule 11.01.2011
comment
Спасибо что подметил это. Я изменил вопрос.
- person view   schedule 11.01.2011
Ответы (1)
Я реализовал сшиватель изображений пару лет назад. Статья о RANSAC в Википедии хорошо описывает общий алгоритм.
При использовании RANSAC для сопоставления изображений на основе признаков вам нужно найти преобразование, которое лучше всего преобразует первое изображение во второе изображение. Это будет модель, описанная в статье в Википедии.
Если вы уже получили свои функции для обоих изображений и нашли, какие функции на первом изображении лучше всего соответствуют функциям на втором изображении, 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, что именно то, что вам нужно при сшивке.
person
erik
schedule
12.01.2011