Đánh dấu, như tôi đã sử dụng cho ProCamCalib, nên được phát hiện mạnh mẽ hơn so với mẫu bàn cờ. Bạn có thể sử dụng ARToolkitPlus như với ProCamCalib, nhưng có những lựa chọn thay thế khác, hoặc bạn có thể làm cho máy dò nhỏ của riêng bạn. :) Sau đó, với các tọa độ góc được phát hiện của các điểm đánh dấu, chúng ta có thể hiệu chỉnh theo cùng một cách, bằng cách sử dụng phần còn lại của các hàm hiệu chuẩn của OpenCV.
Và tôi cũng có thể thực hiện các nội dung thú vị với nó, như được hiển thị trên trang ProCamTracker.
EDIT: Bây giờ tôi hiểu câu hỏi tốt hơn, chúng tôi có thể thực hiện điều này cho các cảnh tĩnh khá dễ dàng, mặc dù OpenCV sẽ không giúp ích nhiều cho chúng tôi. Đầu tiên, chúng tôi đặt camera ở vị trí mà từ đó chúng tôi muốn người xem nhìn thấy một bản chiếu được sửa chữa. Sau đó, chúng tôi dự đoán các mẫu nhị phân (trông giống như các chấm nhấp nháy cục bộ) và chụp các hình ảnh của các mẫu chấm đó. Sau khi phát hiện từ hình ảnh camera và giải mã những dấu chấm đó thành mã nhị phân, chúng tôi nhận được máy ảnh < -> tương ứng với pixel của máy chiếu, cũng một số lượng đỉnh dù sao, và từ đó nó là đồ họa 100%. Dưới đây là một bài báo bao gồm các bước sau trong một số chi tiết:
Zollmann, S., Langlotz, T. và Bimber, O.
Passive-Active Hiệu chuẩn hình học cho Dự View-phụ thuộc vào Arbitrary Bề mặt
http://140.78.90.140/medien/ar/Pub/PAGC_final.pdf
Video giới thiệu: http://140.78.90.140/medien/ar/Pub/PAGC.avi
EDIT2: Bằng cách chiếu một số kiểu mẫu, chúng tôi có thể tìm ra tọa độ pixel tương ứng với pixel nhất định trong hình ảnh camera. Chúng tôi thường sử dụng các mẫu chấm theo thời gian vì dễ dàng phát hiện và giải mã ... Và thực tế, OpenCV có thể có ích cho việc này. Cách tôi nghĩ rằng tôi sẽ cố gắng làm điều đó sẽ đi một cái gì đó như thế này. Chúng ta hãy chỉ có 2 bit cho sự đơn giản. Do đó chúng tôi có bốn hình ảnh: 00, 01, 10 và 11. Vì chúng tôi kiểm soát hình ảnh máy chiếu, chúng tôi biết chúng, nhưng chúng tôi cũng phải tìm chúng trong hình ảnh của máy ảnh. Đầu tiên tôi sẽ lấy hình ảnh cuối cùng (camera), 11, và trừ nó từ hình ảnh đầu tiên (máy ảnh) 00, sử dụng cvAbsDiff(), sau đó binarize kết quả với cvThreshold(), và tìm các đường viền (hoặc các đốm màu) trong nhị phân hình ảnh với cvFindContours(). Chúng ta nên chắc chắn rằng mỗi đường bao có một khu vực thích hợp với cvContourArea(), trong khi chúng ta có thể tìm thấy centroid của nó với cvMoments(). Sau đó, chúng ta có thể bắt đầu làm việc với các hình ảnh khác. Đối với mỗi đường bao, tôi cố gắng lấy các pixel cvBoundingRect() tới cvCountNonZero() trong ảnh khác (cũng được binarized với cvThreshold() camera), bên trong các hình chữ nhật giới hạn này, chúng ta có thể thiết lập thông qua cvSetImageROI().Nếu số đếm không lớn thì phải được đăng ký là 1, nếu không, là 0.
Khi bạn có tất cả các bit, bạn có mã và bạn đã hoàn tất.
Bạn đang tìm loại chi tiết nào? –
Đầu tiên cảm ơn bạn đã trả lời. Bạn có thể giải thích một số vấn đề cơ bản về cách phát hiện biến dạng (thuật toán). Sau đó, nếu dữ liệu chỉnh sửa được tìm thấy theo một cách nào đó, phương pháp OpenCV nào là tốt nhất để được sử dụng để hiệu chỉnh? Thật không may tài liệu OpenCV là rất nghèo. – bkausbk
Ok, tôi sẽ làm rõ điều gì đó trước tiên. Các hình chữ nhật màu xanh mà bạn hiển thị là "đã sửa", chúng được sửa chữa chính xác như thế nào? Họ dường như không phù hợp với bất cứ điều gì tôi có thể nhìn thấy trong ảnh chụp màn hình ... BTW, có rất nhiều chi tiết về những điều như vậy trên trang web này http://www.vision.caltech.edu/bouguetj/calib_doc/ và trong cuốn sách này "Nhiều hình học trong tầm nhìn máy tính" http://www.robots.ox.ac.uk/~vgg/hzbook/, đó là những tài liệu tham khảo tốt. Trong mọi trường hợp, hãy cho tôi biết cách bạn đủ điều kiện cho các hình chữ nhật màu xanh đó là "đã sửa", nhờ –