2011-02-02 32 views
8

Tôi đang thực hiện một dự án để tìm tốc độ của một chiếc xe từ hình ảnh. Chúng tôi đang chụp những hình ảnh này từ trong xe. Chúng tôi sẽ đánh dấu một số đối tượng từ hình ảnh đầu tiên làm tài liệu tham khảo. Sử dụng các thuộc tính của cùng một đối tượng trong hình ảnh tiếp theo, chúng ta phải tính toán tốc độ của phương tiện di chuyển. Bất cứ ai có thể giúp tôi ở đây??? Tôi đang sử dụng opencv python. Tôi đã thành công cho đến khi tìm thấy điểm ảnh đã đánh dấu trong hình ảnh thứ hai bằng phương pháp Luồng quang học. Bất cứ ai có thể giúp tôi với phần còn lại?Tìm tốc độ của xe từ hình ảnh

+0

Điều này cũng không phụ thuộc nhiều vào máy ảnh được sử dụng để chụp ảnh? Tốc độ màn trập cũng nên được xem xét. – darioo

+3

có rất nhiều điều cần xem xét: ví dụ: khoảng cách vuông góc của đối tượng đánh dấu từ đường di chuyển của ô tô, thời gian giữa 2 hình ảnh – mauris

+0

có lẽ bạn nên cung cấp một số mã để hiển thị quy trình của mình. Nếu không có điều đó, sẽ rất khó cho bất cứ ai trả lời. –

Trả lời

10

Biết tần suất chuyển đổi, bây giờ bạn phải tìm khoảng cách giữa các vị trí kế tiếp của điểm đánh dấu.

Để tìm khoảng cách này, tôi khuyên bạn nên ước tính đặt ra điểm đánh dấu cho mỗi hình ảnh. Nói một cách lỏng lẻo, "tư thế" là ma trận chuyển đổi thể hiện tọa độ của một đối tượng liên quan đến máy ảnh. Một khi bạn có những tọa độ kế tiếp, bạn có thể tính toán khoảng cách, và sau đó là tốc độ.

Ước tính liều lượng là quá trình tính toán vị trí và hướng của được biết đến Đối tượng 3D liên quan đến máy ảnh 2D. Tư thế kết quả là ma trận chuyển đổi mô tả tham chiếu của đối tượng trong tham chiếu của máy ảnh.

Pose description

OpenCV thực hiện một thuật toán ước lượng tư thế: Posit. Doc nói:

Với một số điểm 3D (trong đối tượng hệ toạ độ) của đối tượng, tại ít nhất bốn điểm không đồng phẳng, của họ tương ứng với dự báo 2D trong hình ảnh , và độ dài tiêu cự của máy ảnh, thuật toán có thể ước tính tư thế của đối tượng.

Điều này có nghĩa:

  1. Bạn phải biết độ dài tiêu cự của máy ảnh của bạn
  2. Bạn phải biết hình học của điểm đánh dấu của bạn
  3. Bạn phải có khả năng phù hợp với bốn điểm của điểm đánh dấu của bạn biết trong hình ảnh 2D

Bạn có thể phải tính toán tiêu cự của máy ảnh bằng cách sử dụng calibration routines do OpenCV cung cấp. Tôi nghĩ bạn có hai dữ liệu cần thiết khác.

Edit:

// Algorithm example 

MarkerCoords = {Four coordinates of know 3D points} 

I1 = take 1st image 
F1 = focal(I1) 
MarkerPixels1 = {Matching pixels in I1} 
Pose1 = posit(MarkerCoords, MarkerPixels1, F1) 

I2 = take 2nd image 
F2 = focal(I2) 
MarkerPixels2 = {Matching pixels in I2 by optical flow} 
Pose2 = posit(MarkerCoords, MarkerPixels2, F2) 

o1 = origin_of_camera * Pose1 // Origin of camera is 
o2 = origin_of_camera * Pose2 // typically [0,0,0] 
dist = euclidean_distance(o1, o2) 
speed = dist/frequency 

Chỉnh sửa 2: "tần số thương vụ này là gì" (Câu trả lời cho ý kiến)

Tính toán tốc độ của chiếc xe tương đương với tính toán tốc độ của điểm đánh dấu. (Trong trường hợp đầu tiên, tham chiếu là điểm đánh dấu gắn liền với trái đất, trong trường hợp thứ hai, tham chiếu là camera gắn vào xe.) Này được thể hiện bằng phương trình sau đây:

speed = D/(t2-t1) 

Với:

  • D khoảng cách [o1 o2]
  • o1 vị trí của các điểm đánh dấu lúc t1
  • o2 vị trí của các điểm đánh dấu tại thời gian t2

Bạn có thể truy xuất thời gian đã trôi qua bằng cách trích xuất t1t2 từ siêu dữ liệu ảnh của bạn hoặc từ tần suất chuyển đổi của thiết bị hình ảnh của bạn: t2-t1 = T = 1/F.

"Sẽ không tốt hơn nếu bạn đánh dấu những thứ đơn giản như áp phích? Và nếu làm như vậy chúng ta không thể coi nó là đối tượng 2d?"

này là không thể với các thuật toán thừa nhận (hoặc với bất kỳ khác đặt ra thuật toán ước lượng như xa như tôi biết): nó đòi hỏi Bốn không đồng phẳng điểm. Điều này có nghĩa là bạn không thể chọn một đối tượng 2D được nhúng trong một không gian 3D, bạn phải chọn một đối tượng có độ sâu nào đó.

Mặt khác, bạn có thể sử dụng một hình dạng đơn giản thực sự, với mức âm lượng. (Ví dụ: khối lập phương)

+0

Tôi có một nghi ngờ nghiêm trọng. Vì chúng ta sẽ có quyền tự do để đánh dấu các đối tượng một mình, sẽ không tốt hơn nếu đánh dấu những thứ đơn giản như áp phích (chủ yếu là hình chữ nhật trong hình dạng)? Và nếu làm như vậy không thể chúng ta xem nó như một đối tượng 2d? Và tần suất mua lại là gì? Tôi hơi mới với những thuật ngữ như vậy. –

+0

Và cảm ơn câu trả lời có giá trị của bạn. :) –

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