NoticiasBlog.

NDK & Visión artificial en Android

25 septiembre, 2019 | APPs, Desarrollo



Hoy nuestro Mobile Projects Leader Ruben, nos va hablar sobre NDK y la Visión Artificial en Android.

NDK

En el desarrollo de aplicaciones nativas existe la popularización de que el desarrollo de código nativo esta asociado a los lenguajes en caso de Android Java y/o Kotlin. Esto es totalmente cierto pero existe un nivel inferior.

Java/Kotlin tiene la gran ventaja de poder ejecutarse prácticamente en cualquier entorno sin prácticamente variar el resultado. Es lo mismo la ejecución en una Android SmartTv, Wear OS o Android. Esto es gracias a la arquitectura que sigue Java/ Kotlin.  

A pesar de que esto es una clara ventaja en cuanto a tiempos de desarrollo y costes, existe como en casi todo en esta vida un pero, el rendimiento.

Aunque en la mayoría de las aplicaciones, el rendimiento que otorga Java /Kotlin es más que suficiente, existe campos como el procesamiento de video, imagen, audio, juegos, Inteligencia artificial… donde es necesario bajar aún más de nivel para lograr exprimir las características del hardware al máximo posible.  

Para ello el ecosistema de Android brinda la herramienta NDK.

NDK ofrece la programación a bajo nivel usando los lenguajes C/C++ . En la siguiente infografía se analiza las diferencias entre ambas tecnologías de desarrollo:

Visión Artificial

Dentro de los usos prácticos del NDK en Android esta el campo de la inteligencia artificial. 

En este campo, se está en el tercer verano de la inteligencia artificial , la cantidad de inversión publica y privada en este sector es realmente considerable así como los productos .

Dentro de la I.A hay un campo que tiene gran importancia que es la visión artificial. No es necesario las implicaciones que tiene en sectores como la automoción, reconocimiento facial, realidad aumentada…

En Android es posible desarrollar aplicaciones de Visión Artificial gracias a NDK y librerías como OpenCv (https://opencv.org/android/).

En este articulo no va a explicar como instalar/usar NDK y OpenCv ya que existen números tutoriales al respecto, pero sí se va a dar una visión general de su funcionamiento. 

 

OpenCV en Android

Una imagen capturada por una cámara de Android sufre un proceso de conversión desde una señal analógica hasta una digital. En esencia una vez convertida, es común que sea representada en una matriz de tripletas RGB .

Esta matriz no es más que una matriz de N x M de vectores tridimensionales:

 

Cada posición Ni x Mj representa un pixel. De esta forma la imagen en formato numérico es posible tratarla por diversos algoritmos / técnicas como de morfología matemática, segmentación, operadores locales, gradientes, contornos…

Todo ello para obtener la información que deseamos.

 

Ejemplo practico:

Una unidad de investigación medica de psiquiatría piensa que el numero de parpadeos del ojo por minuto de un paciente puede tener alguna relación con trastornos psiquiátricos. De ser así se podría desarrollar un sistema diagnostico precoz.

Para ello se desarrolla una aplicación en Android con OpenCV en la cual se emplean técnicas como HAAR CASCAD con el cual se detecta la cara y los ojos. Sabiendo los frames por segundo de la cámara es posible detectar los parpadeos por minuto:


¿Qué nuevas APPS podrán usar estas tecnologías?

Esperamos vuestros comentarios sobre este tema, si tenéis dudas sobre el Desarrollo de Apps o tenéis algún problema en la actualidad, nosotros os podemos ayudar en hola@binima.com

android apps desarrollo mobile ndk sdk

Síguenos

Autores

Rubén López

Rubén López

Mobile Projects Leader

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *