Bienvenido: Ingresar
location: Diferencias para "Vision/MultiCameraCalibration"
Diferencias entre las revisiones 2 y 23 (abarca 21 versiones)
Versión 2 con fecha 2015-08-06 19:11:26
Tamaño: 265
Comentario:
Versión 23 con fecha 2015-08-07 12:57:21
Tamaño: 5731
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 3: Línea 3:
#format inline_latex
<<TableOfContents(6)>>
Línea 6: Línea 7:
== Creación del Data Set == /!\ Para descargar el proyecto : [[attachment:calibracion.tar.gz]]

/!\ Para mas información sobre el proyecto: [[LabElectronica/MultiCameraCalibration|Calibración de múltiples cámaras]].

== Requisitos ==
Para realizar una Calibración de múltiples cámaras, se requiere: un Data Set (Set de imágenes), donde el Fiducial (Patron), sea visto al menos por un par de cámaras, osea que el Fiducial a detectar esté en un área de visión solapada, y la matriz de calbración de la cámara mas coeficientes de distorsión de la lente obtenidos mediante una calibración intrínseca.

=== Data Set ===
Para realizar el Data Set se propone la utilización del script {{{Captura_multiCamera.py}}} incluído en el directorio '''CreacionDataSet''' del archivo adjunto [[attachment:calibracion.tar.gz]]. {{{Captura_multiCamera.py}}} crea en el directorio donde fue ejecutado, un directorio '''Capturas_[día]_[mes]_[año]-[índice]'''(''índice:por defecto comienza en 0, de encontrarse continúa la numeración''), que contiene directorios '''cam[índice]'''(''ïndice: identifica la cámara a la que pertenece el directorio''), estós últimos directorios contienen imágenes '''''img[índiceImg]_[índiceCam]''''' referente a las cámaras.
El código del script posee un encabezado de comentario ''IP & INICIALIZACION'', dentro de este una variable tipo lista '''IPoDISP''' contiene las direcciónes IP (''Formato: http://...'') o DISPOSITIVOS (''/dev/video[índice]'') a utilizar. El usuario debe editar e ingresar el/los IP o DISPOSITIVOS que posea.

Se considera una realización de 20 tomas mínimas.

'''Utilización:'''

{{{
$ python Captura_multiCamera.py
}}}

'''Modulos:'''
''CAM.py'', incluído en '''CreacionDataSet'''.

''Aclaración: La captura de imágenes para formar un data set puede realizarse con los medios que el usuario disponga, manteniendo como consideración los nombres de los directorios '''cam[índice]''' y archivos tipo imagen '''''img[índiceImg]_[índiceCam]''''', para el funcionamiento de el script de Calibración de múltiples cámaras.''

=== Calibraciíón Intrínseca ===

Para la obtención de la matriz de calibración y los coeficientes de distorsión se implementó el script {{{Calibración_Fid_Chessboard.py}}} incluído en el directorio '''CreacionDataSet''' del archivo adjunto [[attachment:calibracion.tar.gz]]. El script utiliza un conjunto de imágenes donde en su composición se observe un Fiducial (Patron) del tipo Chessboard [[attachment:Chessboard.png]], devolviendo al directorio de imagenes tres archivos con formato ''NumpyArray'' correspondientes a la matriz de calibración ('''mat_calib.npy'''), a los coeficientes de distorsión ('''coef_dist.npy''') y como referencia al error total de la calibración ('''Error_total.npy''')

'''Utilización:'''

{{{
$ python Calibracion_Fid_Chessboard.py -f <path> -a <a> -b <b> -t <format>
}}}

||<:>'''Párametros'''||<:>'''Descripción'''||
||<:>-f||<:>Directorio donde se encuentran las ímagenes||
||<:>-a||<:>N° de esquinas interiores verticales||
||<:>-b||<:>N° de esquinas interiores horizontales||
||<:>-t||<:>Formato de las imágenes sin considerar el punto(.) jpg,png,pnm||

''Aclaración: la obtención de imágenes puede realizarse con {{{Captura_multiCamera.py}}}, donde el Fiducial se observe en diferentes posiciones y distancias. Como referencia se consideran 20 tomas mínimas por cámara a calibrar.''
Línea 9: Línea 50:
Una vez obtenido el data set de imágenes se puede realizar la calibración extrínseca del conjunto de cámaras. Para ello, se implementó el script {{{calc_multi_ext.py}}} también presente en [[attachment:calibracion.tar.gz]] en el directorio CalibraciónExtrínseca.

Para que el script {{{calc_multi_ext.py}}} funcione, se necesita un data set de imágenes generado por {{{Captura_multiCamera.py}}} ó al menos siguiendo el formato que se indicó anteriormente. Además, en los directorios '''cam[índice]''' debe incluirse las matrices de calibración intrínseca de cada cámara mediante los archivos '''mat_calib.npy''' y '''coef_dist.npy'''.



=== Módulos ===
Es necesario instalar los siguientes módulos:

 NumPy

 OpenCV

 Matplotlib

Los demás módulos importados vienen con el proyecto en [[attachment:calibracion.tar.gz]].

=== Utilización ===


Para calcular las matrices de calibración extrínseca debe ejecutarse la siguiente línea:

{{{
$ python calc_multi_ext.py -f [CHESS|CIRCLE|L1|L2] -W <w> -H <h> -S <s> -p <path> -v
}}}


=== Aclaraciones ===
{{{calc_multi_ext.py}}} se adapta a data sets formados por cualquier cantidad de cámaras con cualquier cantidad de capturas. El requisito es que el fiducial pueda ser reconocido al menos en un par de imágenes.

El script soporta los siguientes tipos de figucial:

1. '''Chessboard''' [CHESS] [[attachment:Chessboard.png]]

2. '''Patrón de círculos''' [CIRCLE] [[attachment:Circle.png]]

3. '''Patrón L''' [L1|L2] [[attachment:Fid.png]]

La cámara 0 es utilizada como sistema de coordenadas global, es decir que los parámetros de las demás cámaras están referidos a ésta por defecto. En caso de necesitar referir las cámaras a un punto en particular, se deben incluir las líneas comentadas en el script, que inicializan la matriz '''Ho'''. La matriz '''Ho''' debe contener los parámetros extrínsecos de la cámara 0 respecto del punto de referencia global.

Calibración Multi-Cámara (How to)

/!\ Para descargar el proyecto : calibracion.tar.gz

/!\ Para mas información sobre el proyecto: Calibración de múltiples cámaras.

Requisitos

Para realizar una Calibración de múltiples cámaras, se requiere: un Data Set (Set de imágenes), donde el Fiducial (Patron), sea visto al menos por un par de cámaras, osea que el Fiducial a detectar esté en un área de visión solapada, y la matriz de calbración de la cámara mas coeficientes de distorsión de la lente obtenidos mediante una calibración intrínseca.

Data Set

Para realizar el Data Set se propone la utilización del script Captura_multiCamera.py incluído en el directorio CreacionDataSet del archivo adjunto calibracion.tar.gz. Captura_multiCamera.py crea en el directorio donde fue ejecutado, un directorio Capturas_[día]_[mes]_[año]-[índice](índice:por defecto comienza en 0, de encontrarse continúa la numeración), que contiene directorios cam[índice](ïndice: identifica la cámara a la que pertenece el directorio), estós últimos directorios contienen imágenes img[índiceImg]_[índiceCam] referente a las cámaras. El código del script posee un encabezado de comentario IP & INICIALIZACION, dentro de este una variable tipo lista IPoDISP contiene las direcciónes IP (Formato: http://...) o DISPOSITIVOS (/dev/video[índice]) a utilizar. El usuario debe editar e ingresar el/los IP o DISPOSITIVOS que posea.

Se considera una realización de 20 tomas mínimas.

Utilización:

$ python Captura_multiCamera.py

Modulos: CAM.py, incluído en CreacionDataSet.

Aclaración: La captura de imágenes para formar un data set puede realizarse con los medios que el usuario disponga, manteniendo como consideración los nombres de los directorios cam[índice] y archivos tipo imagen img[índiceImg]_[índiceCam], para el funcionamiento de el script de Calibración de múltiples cámaras.

Calibraciíón Intrínseca

Para la obtención de la matriz de calibración y los coeficientes de distorsión se implementó el script Calibración_Fid_Chessboard.py incluído en el directorio CreacionDataSet del archivo adjunto calibracion.tar.gz. El script utiliza un conjunto de imágenes donde en su composición se observe un Fiducial (Patron) del tipo Chessboard Chessboard.png, devolviendo al directorio de imagenes tres archivos con formato NumpyArray correspondientes a la matriz de calibración (mat_calib.npy), a los coeficientes de distorsión (coef_dist.npy) y como referencia al error total de la calibración (Error_total.npy)

Utilización:

$ python Calibracion_Fid_Chessboard.py -f <path> -a <a> -b <b> -t <format>

Párametros

Descripción

-f

Directorio donde se encuentran las ímagenes

-a

N° de esquinas interiores verticales

-b

N° de esquinas interiores horizontales

-t

Formato de las imágenes sin considerar el punto(.) jpg,png,pnm

Aclaración: la obtención de imágenes puede realizarse con Captura_multiCamera.py, donde el Fiducial se observe en diferentes posiciones y distancias. Como referencia se consideran 20 tomas mínimas por cámara a calibrar.

Calibración Extrínseca

Una vez obtenido el data set de imágenes se puede realizar la calibración extrínseca del conjunto de cámaras. Para ello, se implementó el script calc_multi_ext.py también presente en calibracion.tar.gz en el directorio CalibraciónExtrínseca.

Para que el script calc_multi_ext.py funcione, se necesita un data set de imágenes generado por Captura_multiCamera.py ó al menos siguiendo el formato que se indicó anteriormente. Además, en los directorios cam[índice] debe incluirse las matrices de calibración intrínseca de cada cámara mediante los archivos mat_calib.npy y coef_dist.npy.

Módulos

Es necesario instalar los siguientes módulos:

Los demás módulos importados vienen con el proyecto en calibracion.tar.gz.

Utilización

Para calcular las matrices de calibración extrínseca debe ejecutarse la siguiente línea:

$ python calc_multi_ext.py -f [CHESS|CIRCLE|L1|L2] -W <w> -H <h> -S <s> -p <path> -v

Aclaraciones

calc_multi_ext.py se adapta a data sets formados por cualquier cantidad de cámaras con cualquier cantidad de capturas. El requisito es que el fiducial pueda ser reconocido al menos en un par de imágenes.

El script soporta los siguientes tipos de figucial:

1. Chessboard [CHESS] Chessboard.png

2. Patrón de círculos [CIRCLE] Circle.png

3. Patrón L [L1|L2] Fid.png

La cámara 0 es utilizada como sistema de coordenadas global, es decir que los parámetros de las demás cámaras están referidos a ésta por defecto. En caso de necesitar referir las cámaras a un punto en particular, se deben incluir las líneas comentadas en el script, que inicializan la matriz Ho. La matriz Ho debe contener los parámetros extrínsecos de la cámara 0 respecto del punto de referencia global.

Ejemplos

None: Vision/MultiCameraCalibration (última edición 2015-08-25 18:10:28 efectuada por JulianPadilla)