2012-06-18 44 views
6

Vì vậy, hãy tưởng tượng rằng có máy ảnh đang xem màn hình máy tính của bạn. Những gì tôi đang cố gắng làm là xác định số lượng máy quay được quay, khoảng cách giữa màn hình và vị trí nó liên quan đến trung tâm của màn hình. Tóm lại các ma trận xoay và dịch.Tính vị trí và hướng của máy ảnh trong opencv

Tôi đang sử dụng opencv để thực hiện việc này và làm theo ví dụ hiệu chỉnh máy ảnh của mình để thực hiện tác vụ này bằng mẫu bàn cờ và khung từ webcam. Tôi muốn làm với bất kỳ hình ảnh chung chung, cụ thể là một nắp màn hình và một khung từ một webcam.

Tôi đã thử sử dụng thuật toán phát hiện tính năng để có danh sách các điểm chính từ cả hai hình ảnh và sau đó khớp với các điểm chính đó với BFMatcher, nhưng đã gặp sự cố. Cụ thể SIFT không khớp chính xác với các điểm chính và SURF không tìm thấy điểm chính xác trên hình ảnh được chia tỷ lệ.

Có giải pháp dễ dàng hơn cho vấn đề này không? Tôi cảm thấy rằng đây sẽ là một điều phổ biến mà mọi người đã làm, nhưng không tìm thấy nhiều cuộc thảo luận trực tuyến.

Cảm ơn !!

+2

Tại sao bạn không tìm thấy màn hình của mình trong hình ảnh và tìm đường viền? Sau đó, bạn có thể tìm vòng xoay và bản dịch vì bạn biết kích thước thực của màn hình và kích thước của hình ảnh xuất hiện trong hình ảnh và bạn cũng biết hình dạng .skewed của màn hình trong hình ảnh, so với hình chữ nhật trong cuộc sống thực. Hmmm .... Câu hỏi thú vị. +1 – eboix

+0

Đây là một câu hỏi hay vì đây không phải là nhiệm vụ đánh dấu phẳng điển hình. +1 –

+0

@eboix, bất kỳ cơ hội nào bạn có thể chia sẻ (các) kỹ thuật liên quan đến việc sử dụng hình học trên thế giới đã biết và hình dạng hình ảnh bị lệch để xác định hướng và vị trí? Tôi đang cố gắng làm điều tương tự tuy nhiên thay vì màn hình máy tính tôi đang sử dụng đèn trần, có kích thước đã biết. – Lucas

Trả lời

3

Tìm dấu phẳng tự nhiên là nhiệm vụ phổ biến trong tầm nhìn máy tính nhưng trong trường hợp bạn có màn hình thay đổi tùy thuộc vào những gì bạn đang hiển thị trên màn hình, có thể là máy tính để bàn, trình duyệt, phim ...

Vì vậy, bạn không thể áp dụng các phương pháp thông thường để phát hiện điểm đánh dấu, bạn nên thử nhận dạng hình dạng. Ý tưởng đang thử sử dụng bộ lọc hạt trên mẫu hình chữ nhật có cùng kích thước (thông qua các tỷ lệ khác nhau) của khung màn hình của bạn, áp dụng phát hiện cạnh đầu tiên.

Bộ lọc hạt sẽ phù hợp với mẫu đến khu vực của khung. Sau khi làm điều này, bạn sẽ biết vị trí. Đối với định hướng, bạn sẽ cần phải tính toán homography, và bạn cần 4 điểm trong "marker" cho điều này, vì vậy bạn có thể áp dụng Direct Linear Transform (cv :: findHomography() thực hiện điều này cho bạn). Vì vậy, bốn điểm của bạn có thể là bốn góc. Đây chỉ là một ý tưởng, chúc may mắn!

+0

Ở đây bạn có một số slide giải thích một ứng dụng tương tự của bộ lọc hạt. Nó phù hợp với một mẫu tổng quát hơn và hoạt động tốt, do đó, đối với ứng dụng của bạn sẽ hoạt động tốt hơn vì kích thước luôn giống nhau: http://www.slideshare.net/Javier_Barbadillo/single-person-pose-recognition-and-tracking- 7742854 –

+0

Nó sẽ không nhất thiết phải là cùng một quy mô mặc dù. Ví dụ khi máy ảnh nhìn xuống màn hình từ bên này sang bên kia, chiều rộng sẽ dài hơn khi máy ảnh nhìn thẳng. – user1463993

Các vấn đề liên quan