2011-07-15 12 views
14

Estoy tratando de escribir un programa usando OpenCV para calcular la distancia desde una cámara web a una esfera blanca de una pulgada. Siento que esto debería ser bastante fácil, pero por alguna razón me estoy quedando en blanco. Gracias por la ayuda antes de tiempo.distancia Hallazgo de la cámara al objeto de tamaño conocido

+0

¿Has probado "calibrar" su sistema? Quiero decir que puedes medir el tamaño del píxel cuando la esfera está a 50 cm, 1 m, 2 m de la cámara web y luego comparar la medición en tiempo real con los datos de calibración. –

+0

Esta es una buena idea, pero si estoy planeando crear una aplicación multiplataforma que se ejecutará en todo tipo de webcams diferentes, ¿cada cámara diferente necesitará su propia calibración? ¿O diferentes cámaras de la misma calidad (por ejemplo, vga, por ejemplo) ven la bola como el mismo número de píxeles en cada distancia? –

+0

Desafortunadamente, necesitará una calibración para cada cámara, porque muy pocas tienen el mismo "ángulo de visión". Algunos son más gran angular (zoom) que otros, ver aquí, por ejemplo: http://www.tomshardware.com/reviews/webcam-quality-test-shootout,878-10.html. Entonces entiendo que esta no es la mejor solución. –

Respuesta

23

Usted puede utilizar semejanza de triángulos para calibrar el ángulo de la cámara y encontrar la distancia.
Usted sabe el tamaño de la bola: D unidades (por ejemplo cm). Colóquelo a una distancia conocida de Z, digamos 1 metro = 100 cm, frente a la cámara y mida su ancho aparente en píxeles. Llame a este ancho d.
La longitud focal de la cámara f (que es ligeramente diferente de una cámara a) es entonces f=d*Z/D.

Cuando vea esta bola de nuevo con esta cámara, y su anchura es evidente d' píxeles, a continuación, por semejanza de triángulos, ustedes saben que f/d'=Z'/D y por lo tanto: Z'=D*f/d' donde Z' es la distancia actual del balón desde la cámara.

+2

¿No es el problema la longitud focal de una cámara? La calibración de la cámara de su teléfono inteligente no le proporciona la distancia focal en términos de metros, sino en términos de píxeles en los ejes x-y. Se han multiplicado por un factor de escala. –

+0

El primer párrafo explica cómo obtener la distancia focal en píxeles. La similitud del triángulo básicamente encuentra el factor de escala de conversión de píxeles a metros. –

+0

Veo lo que dices. Aún así, ¿no se trata simplemente de mantener una base de datos de tamaños y calibraciones del sensor de imagen con la misma cantidad de problemas? –

0

En mi opinión, necesitará un modelo de cámara = un modelo de calibración si desea medir la distancia u otras cosas (en el mundo real). El modelo de cámara estenopeica es simple, lineal y ofrece buenos resultados (pero no corregirá las distorsiones, ya sean radiales o tangenciales)

Si no lo usa, podrá calcular mapa de profundidad-disparidad (por ejemplo, si usa visión estéreo) pero es relativo y no le proporciona una medición absoluta, solo lo que está detrás y lo que está delante de otro objeto ...

Por lo tanto, Creo que la respuesta es: necesitarás calibrarlo de alguna manera, tal vez podrías pedirle al usuario que se acerque a la esfera hacia la cámara hasta que todo el plano de la imagen esté perfectamente lleno de la bola, y con una medida de bola conocida anteriormente, Podrá calcular la distancia ...

Julien,

Cuestiones relacionadas