2016-04-01 14 views
6

Tôi muốn tìm ra giải pháp để có được kích thước của một đối tượng Sử dụng Camera, Vâng có vẻ như trùng lặp mộtTìm Kích thước (Chiều cao, chiều rộng) của một đối tượng sử dụng máy ảnh

How to measure height, width and distance of object using camera?

Nhưng giải pháp không giúp tôi ra ngoài. Kể từ liên kết ở trên tôi có một số ý tưởng để tìm ra khoảng cách (Measure Distance).

Ai đó có thể gợi ý cho tôi cách tôi được phép có chiều rộng cũng như chiều cao của vật thể. Toán đơn giản hoặc bất kỳ ý tưởng nào sẽ thực sự hữu ích.

Có khả năng nào để đạt được giải pháp trên bằng cách sử dụng OpenCV hay không. Measure Height and Width

gì tôi đã cố gắng cho đến nay:

enter image description here

Giả sử chúng ta giả định các cách cố định, Chúng tôi có thể tính toán Angle of elevation

tan(α/2) = (l/2)/d, 

hence 

α = 2*atan(l/2d) 

Nhưng chúng ta vẫn không biết giá trị của L (Độ dài của đối tượng)

Một cách khác để tìm góc Chế độ xem:

double thetaV = Math.toRadians(camera.getParameters().getVerticalViewAngle()); 
    double thetaH = Math.toRadians(camera.getParameters().getHorizontalViewAngle()); 

Có vẻ Không hoạt động !!

Trả lời

4

Vật lý thực tế của ống kính được giải thích ví dụ: this website of Georgia State University.

Xem minh hoạ này sẽ giải thích cách bạn có thể sử dụng một trong hai phóng thẳng hoặc quan hệ độ dài tiêu cự để tìm ra kích thước đối tượng từ kích thước hình ảnh:

Nice lens illustration with equations

Đặc biệt, -i/h' = o/h, và mối quan hệ này o/h đúng cho tất cả các hình tam giác tương tự (có nghĩa là, một đối tượng có kích thước 2h ở khoảng cách 2o có cùng kích thước h' trên hình ảnh). Vì vậy, như bạn có thể thấy, ngay cả trong trường hợp của phương trình đầy đủ, bạn không thể biết cả khoảng cách o và kích thước h của một đối tượng - tuy nhiên một cái sẽ cung cấp cho bạn cái kia.

Mặt khác, hai đối tượng cùng khoảng cách o sẽ thấy kích thước của chúng h1'h2' vào hình ảnh tỷ lệ thuận với kích thước của chúng trong cuộc sống thực h1h2, vì h1'/h1 = M = h2'/h2.

Do đó nếu bạn biết một đối tượng là oh, bạn biết M, do đó biết kích thước của đối tượng trên phim bạn có thể khấu trừ kích thước của nó từ khoảng cách của nó và ngược lại.

Giá trị -i/h' được biểu thị tự nhiên cho giá trị tối đa h'. Nếu kích thước của đối tượng lấp đầy chính xác hình ảnh, nó sẽ điền vào trường xem, sau đó tỷ lệ khoảng cách của nó với kích thước là tan(α/2) = (l/2)/d (lưu ý rằng trong các quy ước của hình ảnh bên dưới, d = ol = 2 * h).

enter image description here

Đây là tên bạn đặt theta trong ví dụ của bạn. Bây giờ, từ kích thước hình ảnh bạn có thể nhận được theo những gì góc bạn nhìn thấy hình ảnh - đó là, những gì kích thước l sẽ hình ảnh được nếu nó ở khoảng cách d. Từ đó, bạn có thể suy ra kích thước của vật thể từ khoảng cách của nó và ngược lại.

bước Thuật toán:

  1. get tỷ lệ r = size of object in image (in px)/total size of image (in px).
    Làm điều này dọc theo trục mà bạn biết hoặc có kế hoạch để có được kích thước đối tượng thực sự, tất nhiên.
  2. được những lĩnh vực tương ứng của quan điểm và góc nhân r bởi tang của nửa góc mà
    r *= tan(camera.getParameters().getXXXXViewAngle()/2)
  3. r bây giờ là tiếp tuyến của nửa góc dưới mà bạn nhìn thấy đối tượng, do đó các mối quan hệ sau là đúng: r = (l/2)/d = h/o (với ký hiệu của bản vẽ tương ứng).
    • Nếu bạn biết khoảng cách d cho đối tượng, kích thước của nó là l = 2 * r * d
    • Nếu bạn biết kích thước l của đối tượng, đó là ở khoảng cách là d = l/(2 * r)

tác phẩm này đối với các đối tượng mũ thực sự được chỉ bởi máy ảnh, nếu chúng không tập trung thì toán học có thể bị tắt.

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