2012-08-11 5 views
12

Durante la calibración de la cámara, el consejo habitual es utilizar muchas imágenes (> 10) con variaciones en pose, profundidad, etc. Sin embargo, observo que generalmente cuantas menos imágenes uso, menor es el error de reproyección. Por ejemplo, con 27 imágenes, cv :: calibrateCamera devuelve 0.23 y con solo 3 obtengo 0.11 Esto puede deberse al hecho de que durante la calibración estamos solucionando un problema de mínimos cuadrados para un sistema sobredeterminado.¿Un error de reproyección más pequeño siempre significa una mejor calibración?

PREGUNTAS:

  1. es lo que realmente utilizan el error de reproyección como una medida absoluta de lo bueno que es una calibración? Por ejemplo, si calibro con 3 imágenes y obtengo 0.11, y luego calibro con otras 27 imágenes y obtengo 0.23 ¿podemos realmente decir que "la primera calibración es mejor"?

  2. OpenCV utiliza las mismas imágenes para la calibración y para calcular el error. ¿No es eso una forma de sobreajuste? ¿No sería más correcto si realmente utilizo 2 conjuntos diferentes, uno para calcular los parámetros de calibración y otro para calcular el error? En ese caso, usaría el mismo conjunto (de prueba) para calcular el error para todos los resultados de mi calibración de diferentes conjuntos (de entrenamiento). ¿No sería eso más justo?

Respuesta

11

Disculpe si esto es demasiado tarde, solo lo vi.

El error es la reproyección del ajuste. Así que busque puntos en una imagen, calcule el modelo del mundo real, recalcule dónde estarían esos puntos en la imagen dada el modelo: informe la diferencia. En cierto modo esto es un poco circular, puede que tenga un modelo que solo sea correcto para las pocas imágenes que luego reportarían un error muy bueno, mientras que al darle muchas imágenes se convertirá en un modelo mucho más correcto en general, pero tendrá un modelo más grande error, simplemente porque está tratando de estirarlo para adaptarse a un espacio mucho más grande.

Llega un punto donde agregar más imágenes no mejora el ajuste, y puede agregar ruido ya que los puntos nunca se detectan perfectamente. Lo importante es proporcionar un conjunto mayor de parámetros, más ángulos y posiciones, en lugar de datos equivalentes

Usar el mismo conjunto de imágenes para predecir el error no es realmente un problema porque el ajuste tiene un significado real en términos de parámetros físicos reales de la lente: no es como entrenar/probar una red neuronal con los mismos datos.

editar: una mejor rutina de calibración que opencv (aunque basada en el mismo concepto) está incluida en 3D-DIC (gratis pero no OSS, regístrese para obtener el enlace de descarga) específicamente vea el calibration manual.

+1

Gracias por responder, no es demasiado tarde, era más una pregunta general. Si entiendo correctamente de su primer párrafo, usted está diciendo que a veces un modelo de cámara se describe mejor con un conjunto de (quizás menos) imágenes, ¿verdad? Además, una de mis conclusiones es que puedes usar el error de reproyección para determinar si el calibre es bueno (err = [0,1]) o malo (err> 1), pero en el intervalo [0,1] no puedes realmente asegúrese de elegir el más pequeño será el mejor. ¿Dirías que esto es correcto, o lo entendí del todo? – Sassa

+0

Porque si no me equivoco, cuando obtuve un error de 0,11 (que es muy bajo) con solo 3 imágenes y sin distorsión de la imagen con estos parámetros, el resultado no distorsionado no fue muy bueno en comparación con el que tenía el error 0.23 a partir de 27 imágenes. – Sassa

+0

Un modelo de cámara basado en menos imágenes será bueno, pero solo para ese pequeño conjunto de posiciones y ángulos. Por lo tanto, es un ajuste local muy bueno pero un mal ajuste global.A medida que agrega más imágenes (hasta un punto), se acerca más a un ajuste global, pero el ajuste local puede ser peor –

Cuestiones relacionadas