SDK thực tế tăng cường với OpenCV [đã đóng]


94

Tôi đang phát triển SDK thực tế tăng cường trên OpenCV. Tôi gặp một số vấn đề khi tìm các hướng dẫn về chủ đề này, các bước cần làm theo, các thuật toán khả thi, mã hóa nhanh và hiệu quả cho hiệu suất thời gian thực, v.v.

Cho đến nay tôi đã thu thập các thông tin tiếp theo và các liên kết hữu ích.

Cài đặt OpenCV

Tải xuống phiên bản phát hành mới nhất .

Bạn có thể tìm thấy hướng dẫn cài đặt tại đây (nền tảng: linux, mac, windows, java, android, iOS).

Tài liệu trực tuyến .

Thực tế tăng cường

Đối với những người ăn xin, đây là một mã thực tế tăng cường đơn giản trong OpenCV. Đó là một khởi đầu tốt.

Đối với bất kỳ ai đang tìm kiếm một SDK hiện đại được thiết kế tốt, tôi đã tìm thấy một số bước chung mà mọi thực tế tăng cường dựa trên theo dõi điểm đánh dấu phải có, xem xét các chức năng của OpenCV.

  1. Chương trình chính: tạo tất cả các lớp, khởi tạo, bắt các khung hình từ video.

  2. Lớp AR_Engine: Kiểm soát các phần của ứng dụng thực tế tăng cường. Nên có 2 trạng thái chính:

    • phát hiện : cố gắng phát hiện điểm đánh dấu trong hiện trường
    • theo dõi : khi nó được phát hiện, sử dụng các kỹ thuật tính toán thấp hơn để theo dõi điểm đánh dấu trong các khung sắp tới.

Ngoài ra, cần có một số thuật toán để tìm vị trí và hướng của máy ảnh trong mọi khung hình. Điều này đạt được bằng cách phát hiện sự chuyển đổi đồng nhất giữa điểm đánh dấu được phát hiện trong cảnh và hình ảnh 2D của điểm đánh dấu mà chúng tôi đã xử lý ngoại tuyến. Giải thích về phương pháp này ở đây (trang 18). Các bước chính để Ước tính Tư thế là:

  1. Tải thông số nội tại của máy ảnh . Trước đó đã được trích xuất ngoại tuyến thông qua hiệu chuẩn. thông số nội tại

  2. Tải mẫu (điểm đánh dấu) để theo dõi: Đó là hình ảnh của điểm đánh dấu phẳng mà chúng ta sẽ theo dõi. Cần phải trích xuất các tính năng và tạo các bộ mô tả (các điểm chính ) cho mẫu này để sau này chúng ta có thể so sánh với các tính năng từ hiện trường. Các thuật toán cho nhiệm vụ này:

  3. Đối với mỗi bản cập nhật khung hình, hãy chạy thuật toán phát hiện để trích xuất các tính năng từ cảnh và tạo bộ mô tả. Một lần nữa chúng tôi có một số tùy chọn.

    • SIFT
    • NHANH
    • LƯỚT SÓNG
    • FREAK : Một phương pháp mới (2012) được cho là nhanh nhất.
    • ORB
  4. Tìm sự phù hợp giữa mô tả và mô tả cảnh.

  5. Tìm ma trận Homography từ các trận đấu đó. RANSAC có thể được sử dụng trước đây để tìm các điểm bất thường / ngoại lai trong tập hợp các đối sánh.

  6. Trích xuất Tư thế máy ảnh từ ảnh đồng nhất.

Hoàn thành các ví dụ:


1
Thật không may, điều này là "không mang tính xây dựng", bạn đang tìm kiếm các đề xuất.
bfavaretto

3
Về tác vụ cài đặt, hiện tại OpenCV đã chuyển sang GIT, vì vậy để tải xuống mã phiên bản, cần thực hiện "git clone git: //code.opencv.org/opencv.git".
Carlos Cachalote

12
47 Phiếu ủng hộ chưa đóng do các quy tắc ngớ ngẩn.
SvaLopLop

Câu trả lời:


19

Vì các ứng dụng AR thường chạy trên thiết bị di động, bạn cũng có thể xem xét trình phát hiện / mô tả các tính năng khác:


3
Cảm ơn! Ngoài ra còn có một phiên bản "nhanh" của FAST chạy thời gian thực trong điện thoại di động, nó có dạng hình chóp và các bộ mô tả SIFT được giảm bớt
Jav_Rock

2
Tôi đã nhận được kết quả gần như hoàn hảo khi sử dụng ORB
dynamic

Trên thực tế, đọc về ORB nó nói nó là một NHANH trong kim tự tháp
Jav_Rock

3
Freak là thuật toán cuối cùng để xử lý bộ mô tả trên AR. Nhanh hơn FAST.
goe

13

Nói chung, nếu bạn có thể chọn các điểm đánh dấu mà bạn phát hiện mục tiêu hình vuông trước tiên bằng cách sử dụng máy dò cạnh và sau đó Hough hoặc đơn giản là các đường viền - sau đó xác định điểm đánh dấu cụ thể từ thiết kế bên trong. Thay vì sử dụng một công cụ so khớp điểm chung.

Hãy xem Aruco để biết mã ví dụ được viết tốt.


4
Đúng, cách tiếp cận fiducial là cách đơn giản nhất, nhưng nó không hoàn toàn cập nhật. Tôi nghĩ bây giờ người ta nên chỉ vào các điểm đánh dấu có kết cấu. Cảm ơn. Tuy nhiên, ví dụ này rất thú vị vì nó được giải thích rõ ràng.
Jav_Rock

1
Nếu bạn muốn biết tư thế, bạn cần phải khớp vị trí 3D của các đối tượng điểm đánh dấu với các chuỗi hình ảnh tương ứng. Mục tiêu hình thường xuyên làm cho dễ dàng hơn điều này, nhưng họ không cần phải phẳng
Martin Beckett

Nhưng nếu chúng không phẳng, bạn cần mô hình 3D hoặc mô hình CAD, nếu không, phép đồng nhất từ ​​2d-sang-3d không phải là một phương pháp hợp lệ nữa, phải không? Ý tôi là Linear Direct Transform sử dụng trong findhomography
Jav_Rock

Vâng, nếu bạn có một dấu hiệu 3d bạn cần phải biết từ thực 3d hình dạng (từ cad, hoặc đo nó) nhưng nó không cung cấp cho một soln tốt hơn
Martin Beckett
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.