Làm thế nào để tính toán vector dịch chuyển 2D để đăng ký hình ảnh nhị phân?


8

Đầu vào của tôi là một số hình ảnh nhị phân như:hình ảnh nhị phân đầu tiên được đăng kýhình ảnh nhị phân thứ hai được đăng ký

Chúng có cùng một nội dung trên toàn cầu nhưng có thể chưa được đăng ký vì chúng được sản xuất từ ​​một máy ảnh cầm tay. Những gì tôi muốn tính toán là vector chuyển vị 2D từ hình ảnh đầu tiên sang hình ảnh thứ hai. Tôi sử dụng OpenCV và nỗ lực đầu tiên của tôi là tính toán các điểm đặc trưng (thuật toán SURF) và phép biến đổi affine giữa cả hai hình ảnh. Nhưng tất nhiên, mô tả tính năng khá kém trên hình ảnh nhị phân, do đó việc khớp rất khó khăn và bản đồ khớp rất không chính xác.

Có ai có ý tưởng làm thế nào tôi có thể làm điều này?

Câu trả lời:


6

Tôi hơi ngạc nhiên khi các điểm tính năng không hoạt động tốt. Tôi đã thành công khi đăng ký hình dạng như của bạn bằng cách sử dụng

  • Harris điểm, đây là một máy dò góc, kết hợp với thuật toán RANSAC. Xem wiki hoặc Peter Kovesi trang web của mình
  • Sử dụng trình phát hiện tính năng như SURF hoặc SIFT kết hợp với bản đồ cạnh của hình ảnh trước khi phát hiện tính năng theo sau là một số hình thức kết hợp mạnh mẽ.

BIÊN TẬP

Tôi đã thử nó với MATLAB và thử một số biến thể về chủ đề này. Hiện tại tôi đang sử dụng

  • Các tính năng SIFT từ bản đồ cạnh đến xác định xoay và chia tỷ lệ, mặc dù chúng rất nhỏ giữa các hình ảnh bạn cung cấp
  • RANSAC cho kết hợp mạnh mẽ
  • Tương quan chéo để xác định bản dịch giữa hai hình ảnh

Trận đấu mạnh mẽ Trước khi đăng ký Sau khi đăng ký

Nguồn trên github .

Một thay thế cho RANSAC có thể là phương pháp bỏ phiếu / bỏ phiếu biến đổi Hough được đề xuất bởi nhà phát minh của SIFT, David Lowe.


Tôi biết Harris, nhưng tôi không có thuật toán kết hợp nhanh và mạnh để đảm bảo tôi có cùng điểm từ ảnh này sang ảnh khác. Thêm vào đó, Ransac không thể sử dụng được như trong OpenCV ...
Stéphane Péchard

Cảm ơn rất nhiều cho nỗ lực của bạn. Nó cho thấy một cách tốt đẹp để thực hiện điều này. Cuối cùng tôi đã sửa đổi cách tôi làm những gì tôi cần làm, bởi vì tính năng tính toán và kết hợp quá tốn CPU đối với tôi. Dù sao cũng cảm ơn, bạn đã làm một công việc tốt!
Stéphane Péchard

Stephane, bạn có thể vui lòng thêm giải pháp của bạn vào trang web không?
Maurits

1
tốt, điều tôi không trả lời cho câu hỏi được hỏi nên không liên quan để đặt nó ở đây. Những gì tôi đã làm là phát hiện các đốm màu của hình ảnh và mô tả từng đốm màu theo số điểm tối thiểu có thể. Tôi muốn chuyển vị 2D để tính toán tích lũy theo thời gian, nhưng tôi sẽ không làm điều đó nữa, vì một mô tả véc tơ của các đốm màu là đủ.
Stéphane Péchard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.