Sei sulla pagina 1di 10

OPENCV, LIBRERA DE CDIGO ABIERTO PARA PROCESAMIENTO DE IMGENES Y VIDEO, MEDIANTE TCNICAS DE AJUSTE ESTADSTICO E INTELIGENCIA ARTIFICIAL

Darvis Dorvigny Dorvigny1*, Joelsy Porven Rubier2


1

Departamento de Programacin e Ingeniera de Software, Facultad 2, Universidad de las Ciencias Informticas


2

Departamento de Sistemas Digitales, Facultad 2, Universidad de las Ciencias Informticas *Autor para la correspondencia: ddorvigny@uci.cu

RESUMEN La visin artificial o visin por computadoras es un campo que ha crecido vertiginosamente en los ltimos aos. Es esencialmente la transformacin de los datos que provienen de algn dispositivo, en una nueva representacin con la que se persigue algn objetivo en particular. Se trata de emular parte del proceso fisiolgico que ocurre en los primeros milisegundos de la visin humana. Se han realizado muchas investigaciones en las ltimas dcadas intentando comprender el sistema visual natural de que disponemos los humanos. Se han logrado en estos aos importantes aplicaciones, entre ellas la obtencin de imgenes basadas en iluminacin, efectos visuales, recuperacin de datos basado en imgenes, reconocimiento de rostros, etc. En este artculo se aborda la aplicacin de tcnicas de inteligencia artificial en el rea de reconocimiento de patrones en imgenes digitales, mediante el uso de la librera de cdigo abierto OpenCV, haciendo nfasis en las tcnicas soportadas en MLL. Palabras Claves: OpenCV, Inteligencia Artificial, Visin por computadora, Reconocimiento de patrones

OPENCV, OPEN SOURCE LIBRARY FOR IMAGE AND VIDEO PROCESSING TECHNIQUES, USING STATISTICAL ADJUSTMENT AND ARTIFICIAL INTELLIGENCE
ABSTRACT Computer vision is a field that has grown rapidly in recent years. It is essentially the transformation of the data coming from any device, in a new representation which aims a particular goal. It is "emulating" part of the physiological process that occurs in the first milliseconds of human vision. There has been much research in recent decades trying to understand the natural visual system that humans have. There has been significant in recent years applications including imaging based on lighting, visual effects, data recovery image-based face recognition, etc. This

article addresses the application of artificial intelligence techniques in the area of pattern recognition in digital images, using the open source OpenCV library, emphasizing the techniques supported in MLL. Keywords: OpenCV,Artificial Inteligence ,Coputer Vision, Patern Recognition. 1 INTRODUCCIN

La visin artificial o visin por computadoras es un campo que ha crecido vertiginosamente en los ltimos aos. Es esencialmente la transformacin de los datos que provienen de algn dispositivo, en una nueva representacin con la que se persigue algn objetivo en particular. Los datos de entrada pueden proporcionar informaciones tales como: "En la imagen en movimiento se encuentra el objeto X", "el objeto X est situado a un metro de distancia", o El rostro que aparece en esa imagen corresponde a la persona Y. Una nueva representacin puede significar, por ejemplo, la transformacin de una imagen a color en otra imagen en escala de grises, o la eliminacin del movimiento de la cmara en una secuencia de imgenes. (Bradski and Kaehler 2008) Se trata de emular parte del proceso fisiolgico que ocurre en los primeros milisegundos de la visin humana. Se han realizado muchas investigaciones en las ltimas dcadas intentando comprender el sistema visual natural de que disponemos los humanos. (Frost Gorder 2008) Se han logrado en estos aos importantes aplicaciones, entre ellas la obtencin de imgenes basadas en iluminacin, efectos visuales, recuperacin de datos basado en imgenes, reconocimiento de rostros, etc. (Medioni and Kang 2004) Entre los factores que constituyen limitaciones en la visin por computadora se encuentran el deterioro de los datos por el ruido, interferencias y distorsiones de fuentes tales como las condiciones cambiantes del clima, iluminacin, reflejos y el movimiento, que provienen del mundo analgico. Para que una computadora pueda procesar los datos, es necesario que se convierta en un formato digital, que requiere un muestreo de la entrada del mundo continuo. El procesamiento de imgenes es un arte en s mismo, y una ciencia, aunque a los efectos de esta discusin pueden clasificarse en 3 grandes reas: (Chaczko, Yeoh et al. 2010) Preprocesamiento de imgenes. Segmentacin de la imagen (lo bsico que conduce a Deteccin de Objetos). Deteccin de color. En (Miller, Fels et al. 2011) se propone la siguiente clasificacin de alcance para la visin por computadoras: Acceso: La recuperacin de datos de la imagen. Transferencia: La comunicacin de datos de imgenes. Conversin: La conversin al formato requerido.

Modificacin: La aplicacin de filtros, transformaciones, etc. Anlisis: El uso de la visin para entender una escena, extraer informacin relevante de la imagen. Entre los retos fundamentales que se enfrentan en la visin por computadora est el reconocimiento de patrones en las imgenes, sean estticas o en movimiento. Una de las libreras ms usadas actualmente en el procesamiento de imgenes es el desarrollo liberado por Intel como OpenCV. Estas libreras proveen rutinas fundamentales para el tratamiento de imgenes estticas o en movimiento, y para el reconocimiento de algunos patrones en dichas imgenes. Para ello se basan en tcnicas estadsticas, y de inteligencia artificial. Segn (Chaczko, Yeoh et al. 2010) la librera OpenCV ha sido desarrollada para aliviar la carga en la programacin de aplicaciones para la visin artificial, aportando un gran nmero de funciones para el procesamiento de imgenes, y algoritmos numricos de propsito general. Existen muchas funciones de nivel superior tales como

cvCalibrateCamera cvCalcMotionGradient, que se encargan de servir de interfaz con los dispositivos de captura de imgenes, y que devuelven resultados razonables en la mayora de las condiciones, y estn diseadas para acelerar el proceso de desarrollo de aplicaciones. Dentro de los componentes fundamentales de la arquitectura de OpenCV se encuentra la Librera de Aprendizaje Automtico (MLL), la cual consiste en un conjunto de algoritmos inteligentes basados en el aprendizaje estadstico, que se centran en convertir los datos en informacin til. En este aspecto se centrar el desarrollo de este artculo.

Arquitectura y estructura bsica de OpenCV

OpenCV se basa en el uso de una estructura modular compuesta por libreras que proveen una gran variedad de funciones. Cada mdulo se asocia a una funcionalidad determinada dentro del proceso de visin artificial, siguiendo una arquitectura similar a la mostrada en la figura 1.

imgproc Procesamiento de imgenes y algoritmos de visin

ml Clasificadores K-NN SPV

Highgui Interfaces grficas, funciones de entrada salida de video.

Core Estructuras y algoritmos bsicos, soporte XML, YML,

Figura 1. Arquitectura bsica de OpenCV. Tomada de (Bradski and Kaehler 2008).

Las funcionalidades fundamentales estn ligadas a los mdulos siguientes:(OpenCV) Core: Contiene las estructuras de datos bsicas, funciones para la persistencia de datos, y otras usadas por el resto de los mdulos. Imgproc: Contiene todo el procesamiento de imgenes que incluye funciones para aplicar transformaciones lineales y no lineales, clculo de histograma, transformaciones geomtricas, entre otras. Video: Contiene funciones para la estimacin de movimiento y el seguimiento de objetos en flujos de video. Highgui: Contiene las interfaces para la codificacin, decodificacin y captura de video e imgenes as como las interfaces grficas fundamentales. Adems de los mdulos mencionados se encuentra Objectdetect que permite el reconocimiento de objetos mediante el uso de cascadas Haar, Features2d para la deteccin de caractersticas en imgenes (OpenCV), Calib3d para el procesamiento y reconstruccin de objetos 3D y la calibracin de dispositivos de video. 2.1 Aprovechamiento de hardware y optimizacin para procesadores Intel

OpenCV se concibi para trabajar en tiempo real, por lo que cuenta con un gran nmero de optimizaciones en el cdigo y posibilidades para usar al mximo las estaciones de trabajo modernas. La implementacin est hecha en lenguaje C y programacin de bajo nivel. Todo el cdigo es completamente reentrante lo que permite usar todas las funciones brindadas en entornos multitatarea. Para acelerar el procesamiento en tiempo de ejecucin, se detecta automticamente si estn instaladas en el sistema: la librera de procesamiento matemtico(Intel) (MKL, por sus siglas en ingls), y la librera de primitivas de optimizacin(Intel) (IPP, por sus siglas en ingls), en una arquitectura con un procesador Intel compatible. IPP proporciona un conjunto de primitivas que aprovechan dentro las instrucciones especiales asociadas a las tecnologas MMX, SSE2 y SSE3. Aunque estas libreras mejoran de rendimiento en gran medida, la instalacin de OpenCV en cualquiera de las arquitecturas soportadas es independiente y no requiere que estn instaladas. Otra de las posibilidades disponibles para acelerar el procesamiento es el uso de los procesadores grficos o GPU, por sus siglas en ingls. OpenCV permite la utilizacin de los GPU mediante el uso de la plataforma de computacin

paralela CUDA (OpenCV). Con esta tecnologa se aprovecha la posibilidad de ejecutar mltiples tareas en paralelo aumentando la rapidez de procesamiento y la eficiencia, fundamentalmente para su uso en tiempo real. 3 Procesamiento de imgenes y mdulos de inteligencia artificial para el reconocimiento de patrones en OpenCV.

El reconocimiento de patrones es un rea importante dentro de la visin artificial, donde se intenta descubrir si existen patrones conocidos en una imagen dada. El proceso que comprueba en la imagen la posible ubicacin de un patrn se llama bsqueda de coincidencias de imgenes. Las tcnicas de coincidencia constituyen la forma ms sencilla de hacer el reconocimiento de patrones. Debido a que la visin y el aprendizaje por computadora estn muy unidos, OpenCV incluye una librera completa librera de propsito general llamada Machine Learning Library (MLL). Esta sub-librera, se centra en patrones estadsticos de reconocimiento y agrupacin, y es muy til para las tareas de visin artificial. Algunas de sus principales funciones son: - Clasificadores bayesianos. - Algoritmos de clasificacin por vecindad. - Maquinas de soporte vectorial. - rboles de clasificacin. - Redes de neuronas. - Boosting. - Random trees En (Bradski and Kaehler 2008) y (Marengoni and Stringhini 2011) se describen detalladamente cada una de estas tcnicas. El objetivo de la mquina de aprendizaje es convertir los datos en informacin. Despus de aprender de una coleccin de datos, se desea alcanzar la capacidad de responder a preguntas sobre los datos, tales como: Qu otros datos son los ms similares a los previamente dados? Hay un coche en la imagen? El aprendizaje automtico convierte los datos en informacin utilizando las reglas de extraccin de patrones o de sus datos. (Bradski and Kaehler 2008) El aprendizaje de la mquina funciona con datos como: valores de temperatura, la intensidad de color, etc. Se podra, por ejemplo, tener una base de datos de 10 000 imgenes de rostros, y a sobre cada una ejecutar un detector de bordes o contornos, para luego recopilar caractersticas tales como la direccin del borde, forma, etc. De esta forma se podra obtener al menos 500 valores de ese tipo por la forma del contorno del rostro, o un vector de caractersticas de 500

entradas. A continuacin, se puede utilizar tcnicas de aprendizaje automtico para construir una especie de modelo a partir de estos datos recogidos. Si slo se desea ver cmo se clasifica en los diferentes grupos (ancho, estrecho, etc.), a continuacin se puede utilizar un algoritmo de agrupamiento. Si se desea aprender a predecir la edad de una persona, por ejemplo, a partir del patrn de bordes detectados en su rostro, se podra utilizar otro algoritmo clasificador. Para lograr estos objetivos, los algoritmos de aprendizaje automtico deben analizar las caractersticas recogidas y ajustar pesos, umbrales, y otros parmetros para maximizar el rendimiento de acuerdo con esas metas. Este proceso de ajuste de parmetros para lograr una meta es lo que se entiende por aprendizaje. Siempre es importante saber qu tan bien los mtodos de mquinas de aprendizaje estn funcionando, y esta puede ser una tarea sutil. Tradicionalmente, se separa el conjunto de datos original en una gran conjunto de entrenamiento (por ejemplo, suponer que de la base datos del ejemplo anterior, se toman 9000), y un conjunto de prueba ms pequeo (los restante 1000). A continuacin, se puede ejecutar un clasificador sobre el conjunto de entrenamiento para aprender el modelo de prediccin de la edad, dada la caracterstica de los vectores de datos. Al finalizar se podr probar el clasificador de la prediccin de edad en las imgenes que quedan en el conjunto de prueba.(Bradski and Kaehler 2008) OpenCV dispone de dos mtodos para implementar las redes neuronales: Mquinas de Soporte Vectorial (SVM, por sus siglas en ingls) y Perceptrn Multicapa (MLP, por sus siglas en ingls).

Perceptrn Multicapa El perceptrn multicapa (MLP, tambin conocida como backpropagation) es una red neuronal que todava se encuentra entre los clasificadores de alto rendimiento, especialmente para el reconocimiento de texto (Wagner 2011). Puede ser lento en el entrenamiento, ya que utiliza descenso de gradiente para minimizar el error mediante el ajuste de conexiones ponderadas entre los nodos de clasificacin dentro de las capas. En cambio, en el momento de reconocer los casos de prueba, es muy rpido. En OpenCV se implementa en la clase CvANN_MLP, y su uso est documentado en el archivo /OpenCV/samples/c/letter_recog.cpp. Puede descargarse de .

Figura 2. Estructura de una Red Neuronal Multicapa. Tomada de (Marengoni and Stringhini 2011) Support Vector Machine Las SVM fueron introducidos por Chervonenkis Vapnikand en su artculo "Teora de Reconocimiento de Patrones" (Wagner 2011). La idea fundamental es encontrar el hiperplano ptimo para separar un conjunto de datos representados en un espacio p-dimensional, asumiendo que tericamente existen infinitos hiperplanos para separar un conjunto de datos(Abril 2003). Un hiperplano es elegido, de manera que la distancia de los puntos entre ambas clases se maximice. Los puntos que abarca el hiperplano son los vectores de soporte, y de ah es que proviene el nombre de SVM. Dada la alta linealidad del clasificador SVM sobre el conjunto de datos p-dimensional en bruto, se pueden utilizar tcnicas lineales de clasificacin basadas en la distancia mxima entre las clases de separacin, para producir nuevos clasificadores lineales, que optimicen la separacin entre las clases. Esta tcnica se aplica en la clase CvSVM en la biblioteca OpenCV de ML. (Abril 2003) El objeto fundamental de las SVMs, es dar solucin al problema que surge en distintos campos, donde se estudia la relacin entre sesgo y varianza, el control de la capacidad, sobreajuste en los datos, etc. Este problema consiste en buscar, para una tarea de aprendizaje dada, con una cantidad finita de datos, una adecuada funcin que permita llevar a cabo una buena generalizacin, que sea resultado de una adecuada relacin entre la precisin alcanzada con un conjunto de entrenamiento particular y la capacidad del modelo.(Abril 2003)

Figura 3. Estructura general de una SVM. Tomada de (Abril 2003).

Los parmetros para la SVM se definen en la estructura CvSVMParams dentro de la librera OpenCV. En (Wagner 2011) se detallan cada uno de estos parmetros. El entrenamiento se realiza pasando el vector con los datos de entrenamiento, y el vector con las etiquetas de las clases, al constructor o la funcin de entrenamiento. 3.1 Deteccin de Objetos

La deteccin de objetos, es una de las funcionalidades disponibles en OpenCV en la biblioteca de funciones objectdetect. Se encuentra como un mdulo independiente debido a que se desarroll posteriormente al mdulo de aprendizaje por computadora. Para le deteccin de rostros, como uno de los objetos ms difciles de clasificar, se usa la tcnica Adaboost para la seleccin y clasificacin de caractersticas sobre imgenes a las que previamente se le aplic una base de filtros Haar.(Viola and Jones 2004) (Guevara, Echeverry Correa et al. 2008) Este mtodo fue propuesto por Paul Viola y Michael .J Jones(Viola and Jones 2004) y se basa en la transformacin de la imagen en una nueva, llamada imagen integral. Esta se forma como resultado de la suma de los pixeles de la imagen original hasta una posicin (x,y) predefinida, como se describe en (Guevara, Echeverry Correa et al. 2008). La extraccin de caractersticas se basa en la aplicacin de filtros con base Haar que generan una codificacin de diferencias en las intensidades, generando patrones en base a los contrastes de las regiones. Para la clasificacin se usa el mtodo de Boosting, que pertenece a los mtodos ensambladores donde se combinan varios clasificadores como se muestra en la figura 4 para obtener menor porciento de error.

Clasificador 1 Imagen

Clasificador 2

Clasificador N Positivo

Negativo

Figura 4. Uso de clasificadores en cascada. Tomada de (Vzquez and Castro).

Estos clasificadores se entrenan con bancos de imgenes positivas y negativas para para ajustar los pesos en la clasificacin. OpenCV implementa un conjunto de funciones que permiten el proceso de entrenamiento, persistencia de datos, y procesamiento de imgenes de forma muy sencilla. Para el proceso de deteccin es necesario cargar los datos del clasificador mediante la llamada a la funcin: bool CascadeClassifier::load(const string& filename) La clasificacin se hace mediante la funcin: void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size()). Esta funcin permite procesar la imagen devolviendo los objetos detectados como una lista de rectngulos. La deteccin mediante el mtodo de Viola-Jones, usando cascadas de clasificadores Haar permite no solamente tener muy buenos resultados y la deteccin de rostros. Se pueden entrenar los clasificadores para la deteccin de caractersticas faciales u otros objetos. Un ejemplo documentado se describe en (Vzquez and Castro).

CONCLUSIONES La aplicacin de tcnicas de inteligencia artificial en el procesamiento de imgenes y seales digitales es un rea del conocimiento donde queda mucho camino por recorrer. El uso de tcnicas de inteligencia computacional que simulen y lleguen a alcanzar la complejidad de los sistemas cognitivos biolgicos, requiere del perfeccionamiento y descubrimiento de mtodos y algoritmos que permitan a los sistemas computacionales realizar esta tarea de forma

eficiente. Las posibilidades brindadas por OpenCV, como una librera de cdigo abierto que permita a entusiastas y profesionales trabajar en este tema, es un paso de gran importancia. Actualmente las posibilidades que brinda OpenCV desde la perspectiva de la visin artificial en el rea de reconocimiento de patrones pueden ser aplicadas a una gran cantidad de problemas reales. Debido a su estructura modular y la capacidad de contar con todo el marco de trabajo para desarrollar nuevas funciones, permite tener una herramienta de gran utilidad tanto para ambientes acadmicos como industriales.

REFERENCIAS

. "Sitio Oficial de OpenCV." Retrieved 27 de noviembre de 2011, 2011, from opencv.willowgarage.com. Abril, G. L. (2003). Modelos de clasificacin basados en mquinas de Vectores Soporte. Bradski, G. and A. Kaehler (2008). Learning OpenCV: Computer vision with the OpenCV library, O'Reilly Media. Chaczko, Z., L. Yeoh, et al. (2010). A preliminary investigation on computer vision for telemedicine systems using OpenCV, IEEE. Frost Gorder, P. (2008). "Computer vision, inspired by the human brain." Computing in Science & Engineering 10(2): 6-11. Guevara, M. L., J. D. Echeverry Correa, et al. (2008). "Deteccin de rostros en imgenes digitales usando clasificadores en cascada." Scientia. Intel. "Intel Integrated Performance Primitives for Linux* OS User's Guide." Retrieved 25 de noviembre de 2011, 2011, from http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/ippxe/ipp_userguide_lnx/index.htm. Intel. "Intel Math Kernel Library (Intel MKL) 10.3 " Retrieved 26 de noviembre de 2011, 2011, from http://software.intel.com/en-us/articles/intel-mkl/. Marengoni, M. and D. Stringhini (2011). High Level Computer Vision Using OpenCV, IEEE. Medioni, G. and S. B. Kang (2004). Emerging topics in computer vision, Prentice Hall PTR. Miller, G., S. Fels, et al. (2011). A conceptual structure for computer vision, IEEE. OpenCV. Retrieved 25 de noviembre de 2011, 2011, from http://opencv.itseez.com/modules/core/doc/intro.html. Vzquez, I. L. and J. L. A. Castro "DETECCIN DE CARAS Y LOCALIZACIN DE CARACTERSTICAS FACIALES PARA RECONOCIMIENTO BIOMTRICO." Viola, P. and M. J. Jones (2004). "Robust real-time face detection." International journal of computer vision 57(2): 137-154. Wagner, P. (2011). "Statistical Machine Learning with OpenCV."

Potrebbero piacerti anche