13

Tôi đang sử dụng phương thức đối sánh mẫu với CV_TM_CCORR_NORMED để so sánh hai hình ảnh ... Tôi muốn thực hiện để thực hiện xoay vòng và bất biến quy mô này .. bất kỳ ý tưởng nào?quy mô và xoay So khớp mẫu

Tôi cố gắng để sử dụng phương pháp tương tự trên Fourier transform của hình ảnh và mẫu, nhưng vẫn là kết quả sau khi luân chuyển là khác nhau

Trả lời

28

Template phù hợp với matchTemplate không tốt khi đối tượng của bạn có thể xoay hoặc thu nhỏ trong cảnh .

Bạn nên thử chức năng openCV từ Features2D Framework. Ví dụ: SIFT hoặc SURF mô tả và FLANN đối sánh. Ngoài ra, bạn sẽ cần phương thức findHomography.

Here là ví dụ tốt về việc tìm đối tượng được xoay trong cảnh.

Cập nhật:

Nói tóm lại, thuật toán là thế này:

  1. Tìm keypoint của hình ảnh đối tượng của bạn 1.1. Chiết xuất mô tả từ những keypoint

  2. Tìm keypoint của hình ảnh cảnh của bạn 2.1 mô tả chiết xuất từ ​​keypoint

  3. mô tả trận đấu bằng cách khớp

  4. Phân tích các trận đấu của bạn

Có các lớp học khác nhau của FeatureDetectors, DescriptorExtractors và DescriptorMatches, bạn có thể đọc về chúng và chọn chúng, phù hợp tốt cho ta của bạn sks.

+0

** Cảm ơn bạn, tôi đã sử dụng homography và thay vì lướt web, tôi đã tìm được các góc làm điểm ưa thích, liệu điều này có phù hợp với FLANN không? lướt sóng và sàng lọc có thể mất nhiều thời gian và giảm hiệu suất ** – Storm2012

+0

'Điểm ưa thích' là thuật ngữ chung. Chúng là các cạnh và hầu hết là các góc. Làm cách nào bạn tìm thấy các địa điểm ưa thích? Bạn có thể sử dụng bất kỳ openCV 'FeatureDetector', hoặc viết của riêng bạn. Ví dụ, có 'FAST',' STAR'. Chúng đơn giản và nhanh chóng. Nhưng họ không giữ thông tin về góc độ của các điểm quan tâm. 'SURF' và' SIFT' chậm hơn nhưng thông tin về các điểm ưa thích lớn hơn (góc). 'SIFT' và' SURF' cho phép bạn tìm các kết quả bất biến theo tỷ lệ. Nhưng bạn có thể sử dụng bất kỳ thiết bị dò tìm OpenCV nào cho trình kết hợp của bạn. Bạn cũng có thể thử các đối sánh khác nhau (ít có trong openCV) –

+0

Cảm ơn bạn rất nhiều – Storm2012

6

Rotation bất biến

Đối với mỗi điểm chính:

  1. Lấy khu vực xung quanh điểm chính.
  2. Tính góc định hướng của khu vực này với độ dốc hoặc phương pháp khác.
  3. Xoay hình và yêu cầu khu vực ở góc này thành 0.
  4. Tính toán các bộ mô tả cho các vùng được xoay này và khớp chúng.

Scale bất biến

Xem BRISK phương pháp

2

Có nhiều cách dễ dàng hơn đối sánh một mẫu mô và luân phiên bất biến vì đi qua phát hiện tính năng và homographies (nếu bạn biết nó thực sự chỉ xoay và quy mô , nhưng mọi thứ khác là không đổi). Để phát hiện đối tượng thực, các phương pháp tiếp cận dựa trên điểm chuẩn được đề xuất ở trên hoạt động tốt hơn.

Nếu bạn biết đó là cùng một khuôn mẫu và không có thay đổi quan điểm, bạn lấy một kim tự tháp hình ảnh để phát hiện khoảng không gian và khớp mẫu của bạn trên các cấp khác nhau của kim tự tháp đó (thông qua một cái gì đó đơn giản, ví dụ như SSD hoặc NCC). Sẽ rất rẻ để tìm các kết quả thô trên các cấp độ cao hơn (= độ phân giải thấp hơn) của kim tự tháp. Trong thực tế, nó sẽ rất rẻ, bạn cũng có thể xoay mẫu của bạn gần như ở các mức độ phân giải thấp và khi bạn theo dõi mẫu trở lại mức độ phân giải cao hơn, bạn sử dụng một bước quay mạnh hơn. Đó là một kỹ thuật khớp mẫu khá chuẩn và hoạt động tốt trong thực tế.