Có thể chuyển đổi từ dạng 2D sang 3D không?


8

Tôi đã chụp các vị trí xe ở các khung khác nhau từ video . Giả sử ô tô (ô tô bên cạnh đang tiến về phía chúng ta trong hình ảnh) centroid tại video frame1 là P (x1, y1) và Q (x2, y2) tại video frame4.

Có thể biểu diễn điểm P và Q thành 3D không? để tôi có thể tính toán khoảng cách pixel chính xác d (PQ) và cuối cùng tính khoảng cách thực tế

Lưu ý: bạn có thể giả sử rằng máy ảnh đứng yên, được đặt ở độ cao 10 m so với mặt đất .u cũng có thể giả sử bất kỳ dữ liệu phù hợp nào nếu bạn xe di chuyển trên đường cũng có thể tham khảo hình tiếp theo.

xem bên và phía trước


1
Đánh dấu 50% câu hỏi của bạn đậm, thực sự không có ích.
jojek

1
@jojek thưa ngài, tôi đã thêm một con số để tham khảo
sagar

Câu trả lời:


4

[EDITED] Đây là cách nó được thực hiện.

Các bước: 1. Cô lập Phần phân chia đường.

Cắt ảnhCô lập dải màu vàng

Sau đó, sử dụng Houghlines, tìm ra các dòng dài nhất trong Hình ảnh. Tìm ra các điểm cực trị mà ranh giới hình ảnh chéo. Bạn đã có điểm tứ giác. Tôi bỏ qua phần này bằng cách chọn chúng một cách thủ công. Trong trường hợp của tôi, chiều rộng của đường ở trên cùng của hình ảnh là 10 và ở dưới cùng là 60.

Tứ giác cần biến đổi

Bây giờ, đối với Đích, chúng ta phải Hình ảnh sao cho Tứ giác Divider có chiều rộng đồng nhất là 60, vì vậy chúng ta lưu vào một điểm mới khác, có cùng điểm dưới cùng, nhưng các điểm trên cùng được sửa đổi khi chúng tạo thành một hình chữ nhật có chiều cao giống như hình ảnh (hoặc lớn hơn, bạn có thể điều chỉnh vì nó phù hợp với bạn sau khi chạy một lần và xem kết quả), nhưng chiều rộng 60. Hãy nhớ rằng, chúng tôi đang chuyển đổi hình ảnh của mình sao cho dải phân cách phù hợp với Khu vực hình chữ nhật này. Hình ảnh sẽ tự động thay đổi.

Bây giờ, sử dụng Mat TransformMat = getPerspectiveTransform(ipPts, opPts);

của opencv trên các điểm tứ giác ban đầu và đích, chúng ta có được Ma trận biến đổi, mà chúng ta áp dụng cho Hình ảnh thử nghiệm của mình.

warpPerspective(ipImg, opImg, TransformMat, ipImg.size());

Hình ảnh biến đổi

Bạn sẽ thấy rất nhiều Vùng được cắt để phù hợp với Đầu ra ở Kích thước đầu vào. Tuy nhiên, bạn sẽ nhận thấy rằng Hình ảnh được chuyển đổi để có Bộ chia song song, như chúng tôi mong đợi. Bằng cách thực hiện một số Dịch và Nội dung, và lấy Hình ảnh Đầu ra Kích thước lớn hơn, bạn sẽ có được điều này. Chúng tôi không bao giờ có thể có được một Hình ảnh đầu ra được bao bọc hoàn hảo, vì kích thước của nó có thể rất lớn. Nhưng chúng tôi sẽ đạt được một số hạn chế sẽ hoàn thành nhiệm vụ của chúng tôi. Đây là hình ảnh cuối cùng:

Hình ảnh được chỉnh sửa cuối cùng


1
@A Matlabber thưa ông trong Matlab có chức năng nào để chuyển đổi từ hình chiếu 2d sang hình chiếu 3d không ??
sagar

Vấn đề của bạn không phải là vấn đề chiếu 2d đến 3d. Đó là một vấn đề về chuyển đổi Homographic và Ánh xạ phối cảnh, sau đó xử lý thêm để giúp bạn tính toán khoảng cách (những gì bạn đang cố gắng thực hiện bằng cách tạo '3d'). Có lẽ cuộc thảo luận này có thể giúp bạn với nó.
shreelock

1
@A Matlabber thưa ông, thật khó để hiểu chuyển đổi Homographic và Bản đồ phối cảnh. Tôi đã tìm kiếm trên google, nhưng không biết gì về nó ..
sagar

Bạn có thể google cho một số ví dụ về Chuyển đổi Homographic và Ánh xạ phối cảnh. Đây là một chủ đề giới thiệu, được dạy trong nhiều khóa học trực tuyến về thị giác máy tính. Bây giờ tôi khá bận rộn, nếu không tôi sẽ cung cấp cho bạn một số điều chỉnh về họ. Hãy thử tìm kiếm các khóa học về Xử lý hình ảnh / Thị giác máy tính, họ hiếm khi có bài tập trình diễn / lập trình về các loại vấn đề như vậy .
shreelock

@A Matlabber ok, tôi sẽ làm như bạn nói. Cảm ơn bạn.
sagar

3

Điều này trông giống như một loại vấn đề truy tìm tia . Nếu bạn biết vị trí và hướng của máy ảnh, bạn sẽ có thể tính toán ma trận chiếu 3x4 và nghịch đảo của nó.

Điều này sẽ cho phép bạn chuyển đổi từ điểm hình ảnh sang vị trí 3d (trên đường). Thảo luận này http://opencv-users.1802565.n2.nabble.com/2D-to-3D-projection-with-given-plane-td7272428.html có thể có nhiều thông tin hữu ích hơn.

Đối với việc áp dụng nó trong MATLAB. Có một affine3d mà bạn có thể sử dụng để lưu trữ biến đổi. Cũng có thể có những điều hữu ích cho các phép chiếu / dò tia trong quá trình trao đổi tệp, chẳng hạn như http://www.mathworks.com/matlabcentral/fileexchange/25974-raytracer nhưng tôi chưa xem chi tiết để tìm những gì có liên quan bạn muốn.


Thưa ông, việc hiểu về chuyển đổi Homographic và phối cảnh phối cảnh trở nên khó khăn. Tôi đã tìm kiếm trên google cũng liên kết với bạn, nhưng không biết gì về nó ..
sagar

1
@sagar Tra cứu "Hình học nhiều góc nhìn trong tầm nhìn máy tính" từ Hartley & Zisserman. Đây là cuốn sách giải thích về địa lý theo cách tự nhiên (sử dụng tọa độ đồng nhất, trong đó phép biến đổi là tuyến tính).
Libor

1

Nếu bạn có thể hiệu chỉnh máy ảnh của mình và nếu bạn có thể phát hiện một số điểm tham chiếu trên mặt đường, thì bạn có thể lấy tọa độ 3D của các điểm hình ảnh trên đường. Điều này giả định rằng con đường là trên một chiếc máy bay. Nói cách khác, nếu bạn có thể phát hiện một chiếc xe, thì bạn có thể tính tọa độ 3D của đáy xe. Xem ví dụ này trong MATLAB bằng Hộp công cụ Hệ thống Tầm nhìn Máy tính.

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.