Está en la página 1de 8

Bibliotecas para el procesamiento de imgenes

OpenCV

Es una biblioteca libre de visin artificial originalmente desarrollada por Intel. Desde que
apareci su primera versin alfa en el mes de enero de 1999, se ha utilizado en infinidad de
aplicaciones. Desde sistemas de seguridad con deteccin de movimiento, hasta aplicativos de
control de procesos donde se requiere reconocimiento de objetos. Esto se debe a que su
publicacin se da bajo licencia BSD, que permite que sea usada libremente para propsitos
comerciales y de investigacin con las condiciones en ella expresadas.

Open CV es multiplataforma, existiendo versiones para GNU/Linux, Mac OS X, Windows y


Android. Contiene ms de quinientas funciones que abarcan una gran gama de reas en el
proceso de visin, como reconocimiento de objetos (reconocimiento facial), calibracin de
cmaras, visin estreo y visin robtica.

El proyecto pretende proporcionar un entorno de desarrollo fcil de utilizar y altamente


eficiente. Esto se ha logrado, realizando su programacin en cdigo C y C++ optimizados,
aprovechando adems las capacidades que proveen los procesadores multincleo. OpenCV
puede adems utilizar el sistema de primitivas de rendimiento integradas de Intel, un conjunto
de rutinas de bajo nivel especficas para procesadores Intel (IPP).

OpenCV (Open Source Computer Vision Library) es una librera de cdigo abierto para la visin
artificial. La visin artificial es un subcampo de la inteligencia artificial, cuyo propsito es
programar un ordenador para que sea capaz de analizar las caractersticas de una imagen o
escena. OpenCV se construy para proporcionar una estructura comn para la visin artificial y
para acelerar su uso en los productos comerciales. Siendo un producto bajo licencia BSD
(Berkeley Software Distribution), OpenCV hace que utilizar y modificar su cdigo sea fcil para
las empresas. La librera consta de ms de 2500 algoritmos optimizados, incluyendo un amplio
conjunto de algoritmos clsicos y actuales de visin artificial. Estos algoritmos se pueden
utilizar para el reconocimiento facial, identificacin de objetos, seguir el movimiento de
objetos, identificar imgenes dentro de otra imagen a partir de una base de datos, etc. Con
una comunidad de ms de 47000 usuarios y ms de 7 millones de descargas, esta librera se
utiliza en empresas, grupos de investigacin y organismos gubernamentales. Originalmente,
OpenCV fue escrita en C++. Actualmente, la librera dispone de interfaces en C++, C, Python,
Java y MATLAB y existe soporte para Windows, Linux, Android y Mac OS. En este proyecto,
utilizaremos algunos mdulos de la librera para el reconocimiento facial en las imgenes
descargadas desde el servidor de vdeo. En concreto, utilizaremos los siguientes mdulos:

Core. Es el mdulo principal de la librera. Est compuesto por funciones y estructuras de


datos definidas que son utilizadas por los dems mdulos.

Android. Este mdulo se utiliza para inicializar los recursos necesarios para utilizar la librera
OpenCV y gestionar la cmara del terminal.

Objdetect. Sirve para la deteccin y clasificacin de los objetos que aparecen en una imagen.

Para la ejecucin de una aplicacin Android que utiliza la librera OpenCV, es necesario instalar
en el terminal la aplicacin OpenCV Manager proporcionada por OpenCV y accesible desde
Google Play.

JavaCV
Es una interfaz para usar OpenCV bajo Java. De hecho comparte la misma documentacin que
OpenCV. Ha quedado relegada a un segundo plano con la salida de la ltima versin de
OpenCV, la 2.4.4, que soporta Java.

Jon's Java Imaging Library (JJIL)

Es una biblioteca para el procesamiento de imgenes en Java. Incluye una arquitectura de


procesamiento de imgenes y ms de 60 rutinas para diversas tareas de procesamiento de
imgenes. Est especialmente dirigida a aplicaciones mviles. Es eficiente tanto espacio como
en tiempo sobre telfonos mviles. Incluye interfaces para que las imgenes se puedan
convertir hacia y desde formatos nativos para J2ME, Android, y J2SE. La biblioteca est
disponible como software libre bajo licencia GPL.

La biblioteca elegida para realizar este proyecto ha sido OpenCV, por ser cdigo abierto, contar
con funciones que cubren las necesidades del alcance del problema, una documentacin muy
amplia y un desarrollo con la plataforma Android muy completo.

Fuente:
http://eprints.ucm.es/22577/1/Procesado_de_imagenes_para_plataformas_moviles.pdf

http://bibing.us.es/proyectos/abreproy/90268/fichero/pedcanvaz-
memoriaTFG_v2.1_javadoc.pdf
JJIL es una biblioteca de procesamiento de imgenes de Java. Incluye una arquitectura de
procesamiento de imgenes y ms de 60 rutinas para diversas tareas de procesamiento de
imgenes.

JJIL est especialmente dirigido a las aplicaciones mviles. Incluye interfaces de modo que las
imgenes se pueden convertir entre formatos de nativos para J2ME, Android y J2SE.

JJIL incluye algunas aplicaciones de ejemplo para la deteccin de caras y de lectura de cdigo
de barras EAN-13 (incluyendo UPC).El lector de cdigo de barras requiere que las imgenes de
alta resolucin (actualmente ms all de un telfono con cmara tpica, pero quizs no
androide), pero el cdigo de deteccin de rostros funciona bien con cualquier telfono con
cmara. Se puede aislar cualquier vista frontal razonable de una cara en unos pocos segundos.

Actualizacin, 22/12/08: He subido una nueva versin de la biblioteca JJIL Android, que
permite que las imgenes se convierten de mapas de bits en Android RgbImages JJIL. Tambin
he actualizado la aplicacin FaceDetect-Android por lo que es obras para la corriente SDK de
Android (y se ejecuta en el T-Mobile G1). Es un detector de cara simple. Capturar una imagen y
dibuja una caja verde alrededor de la cara, o una gran X roja si no encuentra nada. Esto es, por
desgracia, redundante con el G1, ya que viene con el cdigo de deteccin de rostros construida
en pero el cdigo es quizs todava til, ya que el clasificador Haar utilizado para la deteccin
de rostros tambin puede dirigirse a otros clasificadores, y en cualquier deteccin de rostros
caso es fresco y es bueno tener ms de una. Usted tendr que obtener FaceDetect en Android
desde el rbol de cdigo fuente para obtener el cdigo, no poda encontrar la manera de
cargar una aplicacin se puede ejecutar en el telfono de aqu (y sin problemas para acceder,
etc.)

Actualizacin, 16/10/2008 : He aadido muchas clases de JJIL e hice la denominacin ms


consistente. Esta es una actualizacin importante que se romper el cdigo existente, por
favor tenga cuidado. Nuevas clases incluyen cdigo para la manipulacin de imgenes en color,
haciendo varios tipos de urdimbres, llenando polgonos, y enmascarar las imgenes. Las clases
se denominan ahora constantemente: una clase de tubera que lleva un Gray8Image siempre
empieza con 'Gray8', por lo que es Gray8Abs, no GrayAbs.

Actualizacin, 15/05/2008 : Me divide JJIL en una biblioteca central, todava se llama JJIL, y dos
bibliotecas dependientes de la arquitectura, JJIL-J2ME y JJIL-J2SE. Esto afect la estructura de
rbol de fuentes y las descargas. Usted tendr que enlazar con JJIL y JJIL-J2ME si usted est
construyendo cdigo J2ME-dependiente, y JJIL + JJIL-J2SE si usted est construyendo para J2SE.

Fuente: https://code.google.com/archive/p/jjil/
Por qu usar OpenCV en Android?

Mientras que la mayora de las aplicaciones de Android estn escritas en Java, en 2009 se
anunci Android Native Development Kit (NDK). Android NDK permite a los desarrolladores
implementar parte de las aplicaciones utilizando lenguajes de cdigo nativo como C / C ++.
OpenCV es una biblioteca de funciones de programacin centrada principalmente en la visin
por computador. El lanzamiento de Android NDK permite a los desarrolladores utilizar cdigo
OpenCV optimizado en Android.

Esto se debe a que OpenCV se escribe de forma nativa con C ++.

Hay otra biblioteca se puede utilizar para el procesamiento de imgenes en Android, OpenCV
se elige debido a la eficiencia y la documentacin rica. Una de las bibliotecas de procesamiento
de imgenes para Android es JavaCV, que es un contenedor para OpenCV. JavaCV contiene
casi toda la funcin que tiene OpenCV, pero no tiene ninguna documentacin rica para
encontrar las funciones para su proyecto.

La biblioteca de imgenes Java de JJ (JJIL) es una biblioteca de procesamiento de imgenes de


Java. La razn por la que no se elige en este proyecto es porque no se ha actualizado desde
2008 y slo funciona en la versin muy antigua de Android. Aparte de eso, la biblioteca slo
proporcionaba una funcin limitada. Esas funciones sofisticadas como la coincidencia de
objetos no estn disponibles.

Fuente: http://eprints.utar.edu.my/1213/1/IA-2014-1101843-1.pdf

Libreras para procesamiento de imagen compatibles con las APIS de android

En este punto ya se tiene claro que la tarea de manera global no requiere nicamente de una
herramienta para tratar imgenes, sino que, tambin necesita de un software que colabore
con el anlisis de la imagen. Investigando se ha encontrado dos libreras compatibles con el
SDK para Android, la Librera OpenCV y de la Librera Jons Java Imaging Library (JJIL). Las dos
libreras son de cdigo abierto.

OpenCV

Open Source Computer Vision Library (OpenCV), es una biblioteca o librera de software de
cdigo abierto dedicada para la visin artificial y aprendizaje de mquina o aprendizaje
automtico. OpenCV fue construido para proporcionar una infraestructura comn para
aplicaciones de visin artificial y para acelerar el uso de la percepcin de la mquina
(interpretacin de los datos) en los programas comerciales ya existentes. Al ser un producto de
licencia BSD (Berkeley Software Distribution), OpenCV facilita a las empresas utilizar y
modificar el cdigo.

OpenCV tiene ms de 2500 algoritmos optimizados, que pueden ser utilizados para muchas
aplicaciones como las siguientes:

- detectar y reconocer rostros

- identificar objetos
- clasificar las acciones humanas en videos

- hacer un seguimiento a los movimientos de la cmara

- rastrear (buscar, averiguar) el movimiento de objetos

- extraer modelos 3D de objetos

- producir nubes de puntos 3D de cmaras estreo

- unir imgenes para producir en conjunto una imagen de alta resolucin de una completa
escena

- encontrar imgenes similares en una base de datos de imgenes

- eliminar los ojos rojos de las imgenes capturadas con flash

- seguir los movimientos del ojo

- reconocer paisajes

- establecer marcas para recubrirlos con realidad aumentada

- inspeccionar etiquetas de los productos en las fbricas

La biblioteca es utilizada ampliamente en las empresas, grupos de investigacin y en los


organismos gubernamentales. Junto con gigantes multinacionales como Google, Yahoo,
Microsoft, Intel, IBM, Sony, Honda, Toyota, que emplean la biblioteca, hay muchas nuevas
empresas como Applied Minds, VideoSurf y Zeitera, que hacen un amplio uso de OpenCV.

Cuenta con interfaces de C++, C, Python, Java y MATLAB. Es compatible con los sistemas
operativos Windows, Linux, Android y Mac OS. Cuando se trabaja con aplicaciones de visin
artificial en tiempo real, OpenCV puede aprovechar las instrucciones MMX11 y SSE12 cuando
estn disponibles en los procesadores (CPUs).

Para finalizar esta seccin se pasa a revisar el paquete OpenCV disponible para Android y las
facilidades que ofrece la librera para su uso. Segn sus necesidades, el desarrollador puede
descargarse el paquete OpenCV desde el sitio web oficial en la seccin de descargas, en el caso
de las versiones para Android, el paquete viene comprimido en formato ZIP con el nombre de
OpenCVversion-android-sdk, donde version es la versin de OpenCV, por ejemplo la ltima
versin estable es la 2.4.9.

En cuanto a las facilidades que otorga la librera OpenCV, principalmente se pueden


mencionarlas dos formas de uso que pone a disposicin esta librera; aunque en un principio
OpenCV solo facilitaba sus herramientas a travs de Android NDK13 (inicializacin Sincrnica o
Esttica), actualmente existe otra posibilidad de trabajar con esta librera, pues a partir de la
Versin 3.0 - Level 11 de Android, OpenCV pone a disposicin su OpenCV Manager
(inicializacin Asincrnica o Dinmica) como complemento a su paquete. Oficialmente OpenCV
Manager es compatible con las versiones de Android 2.2 y las mayores o iguales a 2.3, sin
embargo, por razones de desempeo y estabilidad los equipos de investigacin y desarrollo
recomiendan utilizarlo desde Level 11 (Android 3.0).

Jons Java Imaging Library


La librera Jons Java Imaging Library posee una Arquitectura de procesamiento de imagen y un
conjunto de funciones (ms de 60 rutinas) para realizar las operaciones ms comunes de
procesamiento de imagen. Se puede acceder libremente a la librera como cdigo abierto bajo
la licencia GPL Reducida (Lesser GPL) .

La biblioteca JJIL est diseada de tal manera que brinde eficiencia al usarla sobre los telfonos
inteligentes (que normalmente poseen reducida capacidad de clculo y memoria RAM), y que
tenga un aceptable rendimiento en el procesamiento de imagen tanto en el dominio del
tiempo como en el dominio del espacio.

En la creacin de JJIL, adems del lenguaje Java tambin se han usado perfiles y plataformas
que as mismo como brindan eficacia tambin ocasionan significativas restricciones en la
librera, en particular las caractersticas empleadas (perfiles y plataformas) no soportan
clculos con punto flotante, y no son compatibles con algunas caractersticas del lenguaje Java,
como es el caso de los tipos genricos, que no son soportados.

La biblioteca JJIL incorpora las ms comunes operaciones para hacer procesamiento y anlisis
de imagen. Dentro de las operaciones de procesamiento estn la umbralizacin, ecualizacin
del histograma, conversin de un sistema de color a otro, reduccin de tamao de la imagen,
transformacin espacial (cambio de posicin de los pixeles, rotacin, traslacin), filtrado
(deteccin de borde) y agrupacin (segmentacin, agrupacin de pixeles dividiendo la imagen
de manera imaginaria en una cierta cantidad de regiones).

En cuanto a las operaciones de anlisis se encuentran el clculo del Histograma (conteo de la


frecuencia del valor de los pixeles) y la Transformada de Hough. A diferencia de la librera
OpenCV, en donde se dispone de una Transformada de Hough Estndar y otra Probabilstica
las mismas que permiten hallar rectas con cualquier inclinacin, en JJIL se tiene por separado
tres funciones: una para detectar lneas con pendiente (LinefitHough), otra para lneas
horizontales (LinefitHoughHoriz) y otra para lneas verticales (LinefitHoughVert).

Estructuralmente JJIL est basado en dos conceptos centrales denominados Image (Imagen) y
Pipeline Stage (Fase de Canalizacin). Es as que tener una Imagen significara tener un objeto
que almacena la informacin de una imagen con un tamao definido, adems en este objeto
se tendrn algunos mtodos que entre otras cosas permitirn el acceso a los datos como un
vector. La etapa de canalizacin o tubera es un poco ms compleja y recibe como parmetro
de entrada una imagen y entrega como salida otra imagen.

Una aplicacin real de procesamiento de imagen requiere de varias etapas de tratamiento


para tener un producto resultante, es por eso que esta librera se apoya en dos tipos de clases
denominadas Secuencia (Sequence) y Escalera (Ladder). Como su nombre lo indica una
Secuencia es una serie de etapas de procesamiento (varias Pipeline Stage). Una Escalera
proporciona un mecanismo para poder combinar dos Pipeline Stage (varias imgenes), esto
porque no todas las tuberas de procesamiento de imagen siguen un orden lineal.

Los aspectos principales que impiden trabajar de manera cmoda con la librera JJIL son:
carencia de suficiente y adecuada documentacin, falta de ejemplos y la explicacin
generalizada de los algoritmos de procesamiento. Tan solo dos ejemplos son los que se
destacan (se hace una explicacin muy detallada) en JJIL, uno donde se hace deteccin de
cdigo de barras y otro que permite la deteccin del logotipo de Android.

Haciendo comparacin de las dos libreras estudiadas, JJIL tiene menos paquetes que OpenCV
y requiere de mayor tiempo de procesamiento que OpenCV, adems JJIL no tiene su
repositorio actualizado de forma permanentemente, es por ello que normalmente la biblioteca
se la utiliza copiando y pegando los elementos necesarios dentro del directorio adecuado del
proyecto, esta accin permite acomodar la librera a la versin de Android con la que se est
trabajando.

Fuente: http://bibdigital.epn.edu.ec/bitstream/15000/11431/1/CD-6476.pdf

Visin mvil es un marco interesante por Google. Este marco tiene la capacidad de
detectar objetos en fotos y videos. S, has ledo bien! Puede detectar objetos en vdeos
tambin.
Lo que todo se puede detectar en fotos y videos ??
Actualmente, Android API puede detectar
-Face
-Barcode
-Text
IOS API puede DetectOnly 2 cosas, la cara y el cdigo de barras.

Hay pocos API en la nube para mviles, pero de Google Mobile Vision funciona sin
nubes. As que ahora puede detectar rostros, cdigos de barras y texto en la imagen o
el vdeo por tener instalado en un dispositivo API.No se requiere llamada de red para
detectar todos estos.
API visin mvil incluye detectores que localizan los objetos visuales en las imgenes
o fotogramas de vdeo. Esta API devuelve la posicin de un objeto en imgenes o

videos. Derecho ... interesante. Ms Lo interesante, puede tener mltiples


detectores para detectar todos los objetos soportados simultneamente en
tramas. Funciona en tiempo real en el dispositivo, as como videos que ya hizo clic y
grabados.
3 detectores estn disponibles:
-Face detector
-Barcode detector
-Text detector

Detector de rostro:

-Este API de seguimiento de caras humanas en imgenes fijas, vdeo grabado por la cmara y
mvil.
-Es pistas de puntos de referencia faciales como los ojos y la nariz.
-Es proporciona informacin sobre el estado de caras humanas. Actualmente, la API cara
androide apoya solamente 2 clasificaciones: los ojos abiertos y la cara sonriente.
-Es capaz de realizar un seguimiento de mltiples caras en un marco.
Usted puede tratar de deteccin de rostros por pasos mencionados en los laboratorios de
Google de cdigo para la deteccin de rostros.
ImageSource: Google doc visin mvil

Esta API se puede utilizar para crear controles de manos libres para juegos y
aplicaciones. P.ej. reaccionar cuando una persona sonre o guio.

Nota: Esta API no es compatible con el reconocimiento de caras, ya que no determina 2 caras
son probable que corresponden a la misma persona.

Detector de cdigo de barras:


Esta API puede detectar cdigos de barras en la cmara mvil, as como en un cuadro. Es
compatible con los formatos de cdigos de barras siguientes:

Cdigos de barras 1D: EAN-13, EAN-8, cdigo 39, cdigo 93, cdigo 128, UPC-A, UPC-E, ITF,
Codabar
cdigos de barras -2D: PDF-417, azteca, QR, Data Matrix
lo ms importante es que puede detectar mltiples cdigos de barras a la vez y trabajar en
cualquier orientacin. Usted puede tratar de cdigo de barras cdigo de laboratorio para
integrarlo en su aplicacin.

Detector de texto:
Esta API puede detectar texto en cualquier lengua latina (francs, alemn, Ingls,
etc.). El desarrollador puede obtener el texto en segmentos. Los segmentos pueden
ser de bloques, lneas y palabras. La imagen de abajo se explican los bloques, lneas y
palabras conceptos.
ImageSource: Google doc visin mvil
Esta API puede ayudar en la lectura de tarjetas de visita, trabajo de entrada de datos,
convertir un archivo de texto de una imagen, etc. Esta API tambin funciona en la
cmara en vivo. el texto podra ser identificado en cualquier secuencia.

Limitaciones:
detector de -Face no es compatible con el reconocimiento de rostros. Esto no tiene la
capacidad de identificar 2 caras idnticas.
Detector -Face slo admite 2 clasificaciones
-Eyes abrir
-Smiling
detector -Text lee al azar. Existe la posibilidad de que vuelva texto en una secuencia
diferente de la secuencia de texto marco. Pero devuelve la posicin del texto, que
puede ser til para organizarlas en secuencia.
Detector -Text no es fiable al 100%
http://www.techjini.com/blog/mobile-vision-api/

También podría gustarte