Estuvimos indagando por diferentes espacios y así traerte la respuesta para tu inquietud, si continúas con dificultades déjanos la duda y te responderemos con gusto.
Solución:
Hmm, ¿estás buscando “guapo” o “exacto”?
La calibración de la cámara es uno de los pocos temas de la visión por computadora donde la precisión puede cuantificarse directamente en términos físicos y verificarse mediante un experimento físico. Y la lección habitual es que (a) sus números son tan buenos como el esfuerzo (y el dinero) que invierte en ellos, y (b) la precisión real (en contraposición a la imaginada) es costosa, por lo que debe averiguar de antemano qué su aplicación realmente requiere precisión.
Si busca las especificaciones geométricas de combinaciones de lente / sensor incluso muy económicas (en el rango de megapíxeles y superior), se hace evidente que la precisión de calibración sub-sub-mm se puede lograr teóricamente dentro de un volumen de espacio de mesa. Simplemente calcule (de la hoja de especificaciones del sensor de su cámara) el ángulo sólido abarcado por un píxel; quedará deslumbrado por la resolución espacial que tiene al alcance de su billetera. Sin embargo, lograr REPETIBLEMENTE algo cercano a la precisión teórica requiere trabajo.
Aquí hay algunas recomendaciones (de la experiencia personal) para obtener una buena experiencia de calibración con equipos de cosecha propia.
-
Si su método utiliza un objetivo plano (“tablero de ajedrez” o similar), fabrique uno bueno. Elija un respaldo muy plano (para el tamaño que menciona, un vidrio de ventana de 5 mm de espesor o más es excelente, aunque obviamente frágil). Verifique su planitud contra otro borde (o, mejor, un rayo láser). Imprima el patrón en papel grueso que no se estire con demasiada facilidad. Colóquelo después de imprimir en el respaldo antes de pegar y verifique que los lados cuadrados sean realmente casi ortogonales. Las impresoras de inyección de tinta o láser baratas no están diseñadas para una precisión geométrica rigurosa, no confíe ciegamente en ellas. La mejor práctica es utilizar una imprenta profesional (incluso una Kinko hará un trabajo mucho mejor que la mayoría de las impresoras domésticas). Luego adhiera el patrón con mucho cuidado al respaldo, use pegamento en aerosol y limpie lentamente con un paño suave para evitar burbujas y estiramientos. Espere un día o más para que el pegamento se cure y la tensión del papel adhesivo alcance su estado estable a largo plazo. Finalmente la medida las posiciones de las esquinas con un buen calibre y una lupa. Puede salirse con la suya con un solo número para el tamaño cuadrado “promedio”, pero debe ser un promedio de medidas reales, no de esperanzas y oraciones. La mejor práctica es utilizar una tabla de posiciones medidas.
-
Observe los cambios de temperatura y humedad: el papel absorbe el agua del aire, el respaldo se dilata y contrae. Es sorprendente la cantidad de artículos que puede encontrar que informan sobre precisiones de calibración submilimétricas sin citar las condiciones ambientales (o la respuesta objetivo a ellas). No hace falta decir que en su mayoría son una mierda. El coeficiente de dilatación de temperatura más bajo del vidrio en comparación con la chapa común es otra razón para preferir el primero como respaldo.
-
No hace falta decir que debes deshabilitar el enfoque automático característica de su cámara, si tiene una: el enfoque mueve físicamente una o más piezas de vidrio dentro de su lente, cambiando así (ligeramente) el campo de visión y (generalmente mucho) la distorsión de la lente y el punto principal.
-
Coloque la cámara en un soporte estable que no vibre fácilmente. Enfoque (y f-stop la lente, si tiene un iris) según sea necesario para la aplicación (no la calibración; el procedimiento de calibración y el objetivo deben diseñarse para las necesidades de la aplicación, no al revés). Ni siquiera pensar de tocar la cámara o la lente después. Si es posible, evite los lentes “complejos”, por ejemplo, los lentes con zoom o los de gran angular. Por ejemplo, las lentes anamórficas requieren modelos mucho más complejos que los que ofrece OpenCV.
-
Toma muchas medidas y fotografías. Quiere cientos de medidas (esquinas) por imagen y decenas de imágenes. En lo que respecta a los datos, cuantos más, mejor. Un tablero de ajedrez de 10×10 es el mínimo absoluto que consideraría. Normalmente trabajaba en 20×20.
-
Amplíe el volumen de calibración al tomar fotografías. Idealmente, desea que sus medidas se distribuyan uniformemente en el volumen de espacio con el que trabajará. Lo más importante, asegúrese de inclinar el objetivo significativamente con respecto al eje focal en algunas de las imágenes: para calibrar la distancia focal, es necesario “ver” un escorzo en perspectiva real. Para obtener los mejores resultados, utilice una plantilla mecánica repetible para mover el objetivo. Una buena es una plataforma giratoria de un eje, que le dará un excelente modelo previo para el movimiento del objetivo.
-
Minimice las vibraciones y el desenfoque de movimiento asociado al tomar fotografías.
-
Utilice buena iluminación. En realidad. Es sorprendente la frecuencia con la que veo que la gente se da cuenta al final del juego de que necesitas fotones para calibrar cualquier cámara 🙂 Usa iluminación ambiental difusa y haz que rebote en tarjetas blancas en ambos lados del campo de visión.
-
Observe lo que está haciendo su código de extracción de esquina. Dibuje las posiciones de las esquinas detectadas en la parte superior de las imágenes (en Matlab u Octave, por ejemplo) y juzgue su calidad. Es mejor eliminar los valores atípicos de forma temprana con umbrales ajustados que confiar en el robustecimiento del código de ajuste de su paquete.
-
Restrinja su modelo si puede. Por ejemplo, no intente estimar el punto principal si no tiene una buena razón para creer que su lente está significativamente descentrada con respecto a la imagen, simplemente fíjela en el centro de la imagen en su primer intento. La ubicación del punto principal generalmente se observa mal, porque es intrínsecamente confusa con el centro de la distorsión no lineal y por el componente paralelo al plano de la imagen de la traducción del objetivo a la cámara. Hacerlo bien requiere un procedimiento cuidadosamente diseñado que produzca tres o más puntos de fuga independientes de la escena. y un muy buen horquillado de la distorsión no lineal. De manera similar, a menos que tenga motivos para sospechar que el eje focal de la lente está realmente inclinado con respecto al plano del sensor, fije en cero el componente (1,2) de la matriz de la cámara. En términos generales, utilice el modelo más simple que satisfaga sus medidas. y su aplicación necesita (esa es la maquinilla de afeitar de Ockam para usted).
-
Cuando tenga una solución de calibración de su optimizador con un error RMS lo suficientemente bajo (unas pocas décimas de píxel, por lo general, consulte también la respuesta de Josh a continuación), trace el patrón XY de los errores residuales (predicted_xy – Measured_xy para cada esquina en todas las imágenes) y ver si es una nube redonda centrada en (0, 0). Los “cúmulos” de valores atípicos o la falta de redondez de la nube de residuos son campanas de alarma que gritan que algo está muy mal, probablemente valores atípicos debido a una mala detección o coincidencia de esquinas, o un modelo de distorsión de lente inadecuado.
-
Tome imágenes adicionales para verificar la precisión de la solución; úselas para verificar que la distorsión de la lente se elimine realmente y que la homografía plana predicha por el modelo calibrado realmente coincida con la recuperada de las esquinas medidas.
Esta es una respuesta bastante tardía, pero para las personas que llegan a esto desde Google:
La forma correcta de comprobar la precisión de la calibración es utilizar el error de reproyección proporcionado por OpenCV. No estoy seguro de por qué esto no se mencionó en ninguna parte de la respuesta o los comentarios, no es necesario que lo calcule a mano, es el valor de retorno de calibrateCamera
. En Python es el primer valor de retorno (seguido de la matriz de la cámara, etc.).
El error de reproyección es el error RMS entre dónde se proyectarían los puntos utilizando los coeficientes intrínsecos y dónde se encuentran en la imagen real. Por lo general, debe esperar un error RMS de menos de 0.5px – Puedo obtener alrededor de 0.1px de manera rutinaria con cámaras de visión artificial. El error de reproyección se usa en muchos artículos sobre visión por computadora, no existe una manera significativamente más fácil o más precisa de determinar qué tan buena es su calibración.
A menos que tenga un sistema estéreo, solo puede averiguar dónde está algo en el espacio 3D hasta un rayo, en lugar de un punto. Sin embargo, como se puede calcular la pose de cada imagen de calibración plana, es posible determinar dónde debe caer cada esquina del tablero de ajedrez en el sensor de imagen. El proceso de calibración (más o menos) intenta averiguar dónde caen estos rayos y minimiza el error en todas las diferentes imágenes de calibración. En el artículo original de Zhang y las evaluaciones posteriores, entre 10 y 15 imágenes parece ser suficiente; en este punto, el error no disminuye significativamente con la adición de más imágenes.
Otros paquetes de software como Matlab le darán estimaciones de error para cada intrínseco individual, por ejemplo, distancia focal, centro de proyección. No he podido hacer que OpenCV escupiera esa información, pero tal vez esté allí en alguna parte. La calibración de la cámara ahora es nativa en Matlab 2014a, pero aún puede obtener la caja de herramientas de calibración de la cámara, que es extremadamente popular entre los usuarios de visión por computadora.
http://www.vision.caltech.edu/bouguetj/calib_doc/
La inspección visual es necesaria, pero no suficiente cuando se trata de sus resultados. Lo más simple de buscar es que Las líneas rectas del mundo se vuelven rectas en tus imágenes sin distorsiones.. Más allá de eso, es imposible estar realmente seguro de si sus cámaras están bien calibradas con solo mirar las imágenes de salida.
La rutina proporcionada por Francesco es buena, sigue eso. Utilizo una tabla de estante como mi avión, con el patrón impreso en papel de póster. Asegúrese de que las imágenes estén bien expuestas, ¡evite el reflejo especular! Utilizo un patrón estándar de 8×6, he probado patrones más densos pero no he visto una mejora en la precisión que marque la diferencia.
Creo que esta respuesta debería ser suficiente para la mayoría de las personas que desean calibrar una cámara; de manera realista, a menos que esté tratando de calibrar algo exótico como un ojo de pez o lo esté haciendo por razones educativas, OpenCV / Matlab es todo lo que necesita. El método de Zhang se considera lo suficientemente bueno como para que prácticamente todos en la investigación de la visión por computadora lo usen, y la mayoría de ellos usa la caja de herramientas de Bouguet o OpenCV.
Reseñas y calificaciones
Nos puedes asistir nuestra función exponiendo un comentario o valorándolo te damos las gracias.