Estimación de posición usando procesamiento de imágenes
- PI - RobotSubmarino
- 22 jul 2020
- 4 Min. de lectura
Actualizado: 29 jul 2020
El procesamiento de imágenes gira casi en su totalidad en Object Detectors, ya que el resto se interpreta como el Data Pre-Processing y el análisis e implementación de la data, ya sea en Software o Hardware.
Específicamente hablando de Object Detectors estos pueden ser creados a través de tres caminos: Classical Computer Vision, Machine Learning y Deep Learning.
Classical Computer Vision
Se utiliza la segmentación de Imagenes Image Segmentation, el cual utiliza modelos como el Blob Analysis o el Color Thresholding.
Se utiliza la identificación de objetos basados en ciertas características específicas (Feature-based Object detection (Scan \& Match)), el cual utiliza modelos como el HOG o SURF.
Machine Learning
Se utiliza las SVMs (Support-Vector Machines), el cual es un algoritmo supervisado que resuelve problemas de regresión o clasificación (Feature Extraction) [Yu-Chieh08].
Viola-Jones Algorithms, el cual es el primer detector de objetos por framework que provee la detección del objeto y su predicción en tiempo real.
Deep Learning
Se utiliza redes neuronales (Neuronal Networks) para poder dividir la imagen en rendijas o boxes definidos con sus respectivas predicciones y probabilidades. Este, utiliza modelos de regresión logística para cada clase, con el fin de calcular el porcentaje y la semejanza de una rendija con la otra con respecto a una determinada clase. De esa forma se determina cuál de las boxes tiene más probabilidad de ser la clase, es decir, el objeto, que ya la red neuronal lo tiene concebida, en la imagen. Los ejemplos son los siguientes: R-CNN, YOLO y SSD.
Es necesario mencionar que en un primer momento se planteó utilizar el camino del Classical Computer Vision para imágenes, pero al momento de acabar la iniciativa se concluyó que no era viable ni el mejor camino a tomar para el proyecto, ya que necesitamos grabar y estar constantemente actualizando los frames que serían procesados.
Por lo tanto, se concluyó que el mejor camino a tomar es un Deep Learning y de esa forma utilizando un modelo YOLO poder extraer los datos de la posición y orientación del objeto a identificar en todo momento, ya que se estaría analizando los frames del video [Jeong18].
Medición de objetos planos con una cámara calibrada (Measuring Planar Objects with a Calibrated Camera), Classical Computer Vision
Para la implementación se usó una cámara de 40 MPS del celular Huawei P30 .
Con la finalidad de determinar su posición se optó por determinar primero el objeto de la imagen que deseamos medir e identificar. Segundo, las propiedades que podemos adquirir una vez que identifiquemos nuestro objeto dentro de la malla de puntos de la imagen.
Pre-Processing Data (Images)
Se capturó una cantidad de fotos semejantes, en la misma posición y con el mismo ángulo con la finalidad de mejorar la calidad, eliminando cualquier distorsión, y calibrar la imagen a procesar [FranCois98].
Luego se evalúa la exactitud de las imágenes calibradas, es decir, cuanto error en pixeles tiene cada imagen designada a calibración con respecto a la imagen a procesar.

Image Processing
Se convirtió la imagen a procesar a HSV (Color Space).
Se pasó a determinar los limites (Threshold the image), debajo y sobre la saturación del píxel de la imagen.
Se convirtió la imagen a procesar en escala de Grises.
Se convirtió la imagen en escala de grises a una imagen en binario.

Se convirtió la imagen en binario para obtener su negativo (Invert binary).
Se redujo los componentes ruidosos de la imagen. Para este caso cada objeto que tenga menos de 1000 pixeles va a ser removido de la imagen.

Encontramos el número de conectividad y los componentes conectados, en este caso se utilizó la función (bwlabel). Además, se tomó como numero de conectividad 8.
Obtenemos las propiedades de los componentes conectados utilizando la función (regionprops).
El (Bounding Box) adquirido del procesamiento está compuesto por 4 puntos, los cuales son ideales para implementar un marcador rectangular sobre el objeto identificado y poder visualizarlo para nosotros.
Creamos una matriz para el centroide separada del bounding box utilizando las propiedades ya adquiridas. Esto nos muestra la ubicación del objeto y por lo tanto su locación dentro del espacio delimitado en la imagen.
Finalmente se plotea la visualización del rectángulo, el cual dibuja el (Bounding Boxe), la imagen a procesar y el centroide.

Análisis
Para el análisis y la interpretación de los resultados sobre todas las propiedades obtenidas, la locación-orientación del objeto procesado y los parámetros de la cámara se es necesario convertir todos los parámetros obtenidos en el procesamiento a una escala que se es posible trabajar. Por esa razón dentro del análisis se tuvo que convertir la escala de todas las mediciones de los parámetros obtenidos.
Llamamos la imagen ya procesada para obtener sus dimensiones en pixeles y su número de bandas de colores.
Dimensionamos la imagen con respecto a la ventana de Matlab donde se visualizará para mejorar la calidad de la imagen y su futura medición.
Calibramos la imagen, para ello tomamos alguna posible dimensión referencial dentro de la imagen procesada y calculamos su escala con relación a su medida real. En este caso se tomó la línea de 200 milímetros de la imagen para poder obtener una relación entre milímetros y pixeles y como consecuencia obtener la escala del objeto en el mundo real.


Finalmente, al obtener la relación de pixeles a milímetros podremos convertir las coordenadas de cualquier punto en el cubo ,de tres dimensiones calculado anteriormente, a puntos reales que nos sirvan para el análisis de la imagen (World Points).
Por lo tanto, se podrá obtener los parámetros de la cámara en la escala que queremos estudiar.

Referencias:
Yu-Chieh Wua and Yue-Shi LeebandJie-Chi Yang. “Robust and ef-ficient multiclass SVM models for phrase pattern recognition”. In:vol. 4. 2008, pp. 12874–2889.
Hyeok-June Jeong, Kyeong-Sik Park, and Young-Guk Ha. “ImagePreprocessing for Efficient Training of YOLO Deep Learning Net-works”. In: vol. 1. 2018, pp. 635–637.
Ezio Malis, F’ranCois Chaumette, and Sylvie Boudet. “Positioning acoarse-calibrated camera with respect to an unknown object by 2D1/2 visual servoing”. In: vol. 1. 1998, pp. 1355–1359.
Comments