Chúng ta có thể đo kích thước của một đối tượng bằng cách sử dụng dữ liệu EXIF ​​từ ảnh không?


7

Rất nhiều người đã hỏi liệu chúng ta có thể đo khoảng cách của một vật thể trong ảnh không. Nhưng tôi đã tự hỏi nếu chúng ta có thể đo kích thước của một đối tượng trong ảnh. Tất nhiên, giả sử chúng ta biết mọi thứ, từ kích thước cảm biến đến chiều cao của nhiếp ảnh gia, v.v.

Ví dụ: Nếu tôi chụp ảnh một con chim đang bay chỉ có bầu trời làm nền, sẽ không có vật thể nào trong khung để đưa ra ý tưởng về kích thước của con chim. Vì vậy, nếu tôi có thể tính toán kích thước đến một mức gần đúng, thì thật tuyệt khi biết điều đó.

Câu trả lời:


6

Nó sẽ không bao giờ nhiều hơn một ước tính, nếu không có một số tham chiếu bên ngoài hoặc khoảng cách chính xác đến đối tượng. Nếu bạn có khoảng cách ước tính cho đối tượng, FOV (/ chiều dài của ống kính) và kích thước cảm biến thì không quá khó để tính toán. Sự không chắc chắn lớn nhất sẽ là khoảng cách đến chủ đề.

Để tìm độ phân giải không gian ( độ lớn ( rộng hoặc cao ) của một pixel trong đối tượng), hãy sử dụng:

(khoảng cách * (kích thước cảm biến / độ dài tiêu cự)) / số pixel

Đảm bảo kích thước cảm biến và độ dài tiêu cự đang sử dụng cùng một tỷ lệ (cả hai đều tính bằng milimét hoặc inch).

Sau đó, bạn có thể đếm số pixel cho đối tượng và nhân số đó với độ phân giải không gian cho một pixle.

Tôi giả sử thay đổi tuyến tính trong FOV trên toàn bộ diện tích của ống kính, không chính xác 100%, nhưng khá gần với ống kính bình thường và dài hơn.


4
Thật tệ là chúng ta không có LaTeX-math hoạt động ở đây trong ảnh.
Håkon K. Olafsen


Phương trình sai. Tại sao lại là 2x? Bạn đang tính một khu vực, do đó, nó là bình phương. Nó phải là khoảng cách ^ 2. Xem ảnh.stackexchange.com/a/12437/7292
Rado

Oh .. và độ dài tiêu cự cũng nên được bình phương
Rado

@ HåkonK.Olafsen: Quan sát: cảm biến_x / focal_length = hình ảnh_x / khoảng cách; sensor_y / focal_length = image_y / distance (khoảng cách được tính từ tiêu điểm). Xem xét một pixel vuông, bạn có thể lấy bất kỳ pixel nào trong số này và nhận: image_x = distance * sensor_x / focal_length. Chia cho số pixel theo chiều ngang pixel_cnt_x bạn nhận được: distance (sensor_x / focal_length) / pixel_cnt_x. Đây là độ phân giải không gian ngang. Số nhân "2x" là không chính xác. Nếu bạn có các pixel không vuông, bạn sẽ phải làm toán cho cả độ phân giải ngang và dọc.
TFuto

2

Máy ảnh của tôi lưu trữ khoảng cách lấy nét trong ảnh. Với điều này, bạn biết con chim của bạn đã đi được bao xa. Sẽ không quá khó để tính kích thước của con chim. Chẳng hạn, bạn có thể chụp một vật có kích thước đã biết và chụp ảnh với cùng một ống kính từ cùng một khoảng cách và so sánh kích thước của vật thể này trong ảnh, với kích thước của con chim trong ảnh.


1
Máy ảnh này là gì?
ysap

Đó là một chiếc Nikon D300
Rene

1
Nhưng không phải khoảng cách lấy nét chỉ lên tới khoảng 3 m và sau đó nó trở nên vô tận? Khi tôi sử dụng phần mềm Magic Lantern trên Canon 550D, nó sẽ hoạt động ít nhất.
Saaru Lindestøkke

1
Tôi sẽ cảnh giác khi tin tưởng vào khoảng cách mà máy ảnh cung cấp ở bất cứ thứ gì từ xa đến gần khoảng cách lấy nét vô cực, vì lỗi hiệu chuẩn nhỏ nhất sẽ gây ra các lỗi có thể là một số bậc của khoảng cách được cung cấp.
Michael C

@BartArondson Nó phụ thuộc vào độ dài tiêu cự của ống kính. Độ dài tiêu cự dài hơn, như thường được sử dụng khi chụp, sẽ lấy nét xa hơn nhiều trước khi nó đạt đến ∞ so với ống kính góc rộng. Đó là lý do tại sao thước đo cuối cùng trước đối với thang đo khoảng cách trên ống kính WA thường chỉ khoảng 1 mét, nhưng ống kính tele dài sẽ có vạch trên 50 mét hoặc thậm chí 100 mét ngay trước vạch.
Michael C

1

câu trả lời chung là: Có và Không, nếu bạn thêm đủ thông tin bên cạnh thông tin EXIF, thì có thể thực hiện được, nếu bạn không thêm đủ thông tin vào thì không, nó trở thành ước tính, thông tin đó là một phép tính cực kỳ phức tạp về phối cảnh của vật thể, nhưng sau đó cũng sử dụng nó để làm việc trở lại định dạng và góc của khung ảnh, sau đó đo chính xác đến mắt hoặc tâm của người (theo độ cao từ mặt đất), sau đó hiểu biết về mặt đất chính xác độ cao bề mặt giữa bạn và đối tượng. và thậm chí nhiều tính toán hơn thế.

Một bước quan trọng mà các câu trả lời khác đang bỏ qua, đó là bạn phải sử dụng dữ liệu trong ảnh để tìm góc phối cảnh của các đường ngang và dọc trên đối tượng mà ảnh của bạn (thực sự có thể thực hiện được, nhưng cực kỳ có thể tính toán phức tạp) và thậm chí còn phức tạp hơn nếu ví dụ trong ví dụ của OP về một vài đối tượng trong ảnh để làm việc, tuy nhiên trong trường hợp này vẫn có thể được thực hiện, nếu đối tượng không ngồi "ngang tầm" trên mặt đất , sau đó thông tin chiều cao cũng cần thiết. Trong ví dụ của OP, phần lớn thông tin đó có thể bị bỏ sót / hoặc không xác định, vì vậy câu trả lời có thể là Không trong trường hợp ví dụ đó. Nhưng để rõ ràng, tiền đề của câu hỏi là có thể thực hiện được, nếu biết thêm thông tin đó và nhiều lần nó được biết, hoặc ước tính có thể được tạo ra từ thông tin đó.

Để tổng hợp làm thế nào (nói chung) điều này có thể được thực hiện: người ta cần một phép đo chính xác về sự thay đổi độ cao mặt đất giữa bạn và đối tượng, (có nhiều điều hơn là chỉ một câu).

sau đó bạn cần một kích thước chính xác từ mặt đất đến trung tâm mắt hoặc trung tâm của khung hình ảnh mà máy ảnh đang tạo ra, khung hình ảnh này có thể được tính từ thông tin EXIF, nhưng độ nghiêng chính xác của khung hình ảnh (máy ảnh) liên quan đến đối tượng cần được tính toán từ thông tin phối cảnh được đề cập trước đó. Và trong trường hợp ví dụ của OP, chiều cao của vật thể so với mặt đất là cần thiết (hoặc hình chiếu của vật thể đó trở lại mặt đất)

để hiển thị nó có thể được thực hiện trong một bức ảnh ví dụ tổng quát hơn, Một ứng dụng thực hiện tất cả những điều này dưới đây: (ngoại trừ việc sử dụng các ước tính cho trung tâm của mắt và thực hiện một phép tính phức tạp về độ cao mặt đất, cũng trở thành một "ước tính" )

Vì vậy, vì nó đang sử dụng các ước tính, bạn cần biết một chiều của đối tượng để điều chỉnh đầu ra cuối cùng của ứng dụng. nhưng điều đó tốt hơn nhiều so với việc phải lấy thước dây cho mọi thứ trên vật thể. Để rõ ràng, nếu ứng dụng có kích thước chính xác cho mắt hoặc trung tâm khung hình ảnh và cấu hình của bề mặt mặt đất thay đổi, thì nó thậm chí sẽ không cần "một chiều đã biết" đó. Vì vậy, trong trường hợp đó, câu trả lời cho câu hỏi OP sẽ là Có.

đầu ra cuối cùng là phối cảnh điều chỉnh "độ cao" của đối tượng và ngay cả với kích thước tự động. (chú ý hình ảnh này đã được chỉnh sửa phối cảnh để tất cả các chiều dọc đều theo chiều dọc, chiều ngang là chiều ngang và điều này được thực hiện tự động mà không cần đầu vào từ người dùng) Không cần hình ảnh chỉnh sửa phối cảnh này để tính kích thước, nhưng cần có thông tin sửa lỗi phối cảnh , được sử dụng để tìm góc, (nghiêng ngáp, v.v.) của khung hình. (làm thế nào máy ảnh đang ngồi tại thời điểm của bức ảnh) đây là điều tôi muốn nhấn mạnh là cần thiết mà các ý kiến ​​khác đã bỏ qua. Trong trường hợp của một "con chim" như trong ví dụ của OP, người ta sẽ thấy khá cao và khô khan đối với dữ liệu cần thiết này, nhưng trong nhiều tình huống có thể giải quyết được. Ví dụ ví dụ dưới đây.

nhập mô tả hình ảnh ở đây

http://www.pictureenginecompany.com/MeasureEngine/MeasureEngine.html


Tôi không nghĩ điều này theo bất kỳ cách nào trả lời câu hỏi. Ứng dụng này chỉ tính toán độ dài tương đối của sự vật khi biết một độ dài. Câu hỏi liên quan đến việc tìm ra kích thước của một thứ gì đó, như một con chim, từ thông tin loại EXIF ​​như tiêu cự, khoảng cách lấy nét, v.v.
MikeW

Tôi đã đề cập đến cách tính kích thước của một cái gì đó trong các bình luận, và sau đó đề cập rằng ứng dụng này thực hiện điều này, nhưng sử dụng "ước tính" cho một số dữ liệu quan trọng mà các bình luận gọi ra .... và tại sao ứng dụng cần "một độ dài đã biết" để sửa vì những "ước tính" được sử dụng, nếu bạn có thông tin chính xác trong các lĩnh vực chính như được đề cập trong các nhận xét, thì ứng dụng này sẽ không cần "một độ dài đã biết", và nó cũng có một số trong số các bước cần thiết, bao gồm các bước mà các bình luận khác đã bỏ qua, như làm việc ngược lại để tìm độ nghiêng và ngáp của khung hình.
hokkuk
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.