2011-01-11 95 views
11

Ai có thể vui lòng chỉ cho tôi cách sử dụng thuật toán RANSAC để chọn các điểm đặc trưng chung trong hai hình ảnh có phần trùng lặp nhất định không? Vấn đề xuất phát từ khâu hình ảnh dựa trên tính năng.
alt text alt textThuật toán RANSAC

+0

Câu hỏi của bạn quá mơ hồ. Bạn có ý nghĩa gì bởi các góc chồng chéo? – koan

+0

Cảm ơn bạn đã chỉ ra điều đó. Tôi đã sửa đổi câu hỏi. – view

Trả lời

20

Tôi đã triển khai trình ghép ảnh một vài năm trước. Bài viết trên RANSAC trên Wikipedia mô tả algortihm chung tốt.

Khi sử dụng RANSAC để đối sánh hình ảnh dựa trên đối tượng địa lý, những gì bạn muốn là tìm biến đổi biến hình ảnh đầu tiên thành hình ảnh thứ hai tốt nhất. Đây sẽ là mô hình được mô tả trong bài viết wikipedia.

Nếu bạn đã có các tính năng cho cả hai hình ảnh và đã tìm thấy các tính năng nào trong hình ảnh đầu tiên phù hợp nhất với các tính năng trong hình thứ hai, RANSAC sẽ được sử dụng như thế này.

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 

Kết quả cuối cùng là biến đổi phù hợp nhất với các điểm trong image2 đến image1, thật là tuyệt vời khi bạn muốn khâu.