Download - Programacion de Apps de Vision Artificial

Transcript
  • PROGRAMACIN DE APPS DE VISIN ARTIFICIAL

    scar Dniz, Jess Salido y M Gloria Bueno

  • Programacin de Apps de Visin Artificial Grupo VISILAB, 2013La copia y distribucin de este libro completo, est permitida en todo el mundo, sin rega-las y por cualquier medio, siempre que esta nota sea preservada . Se concede permiso pa-ra copiar y distribuir traducciones de este libro desde el espaol original a otro idioma,siempre que la traduccin sea aprobada por los autores del libro y tanto el aviso de copy-right como esta nota de permiso, sean preservados en todas las copias.Copia digital (no impresa) de esta obra disponible en http :/ /visi lab.etsii .u clm .es/

    scar Dniz Jess Salido M Gloria BuenoISBN : 978-84-686-3801-0Diseo deportada:Dora I.SierraEditor Bubok Publishing S.L.Impreso enEspaa /Printed in Spain

  • Dedicado a nuestros hijosSantiago y Rodrigo

    Juan Pablo y Jacobo

  • ndice general

    Acerca de los autores VII

    Prlogo IX

    Agradecimientos XIII

    1. Introduccin a la computacin mvil 151.1. Qu es un sistema de computacin mvil? .............................. 151.2. Comunicaciones mviles ....................................................... 161.3. Hardware empleado en computacin mvil .............................. 18

    1.3.1. Arquitectura de procesadores ...................................... 191.3.2. Pantallastctiles ........................................................ 221.3.3. Sistemas sensoriales .................................................. 251.3.4. Cmarasmviles ....................................................... 271.3.5. Bateras ....................................................................31

    1.4. Seguridad de los sistemas mviles ........................................... 341.5. Sistemas Operativos mviles .................................................. 36

    1.5.1. iOS .......................................................................... 371.5.2. Android .................................................................... 431.5.3. Windows Phone .........................................................51

    1.6. Visin por computador en dispositivos mviles ......................... 54

    2. Herramientas de desarrollo en iOS 592.1. Herramientas para desarrollo de aplicaciones iOS ..................... 592.2. Ejecutar nuestro programa en el iPad o iPhone ...........................612.3. OpenCV en iOS ................................................................... 672.4. Imgenes en iOS .................................................................. 70

    3. Visin por computador en iOS 733.1. Primer ejemplo: deteccin de caras ......................................... 733.2. Procesamiento de ficheros de vdeo ..........................................773.3. Captura de vdeo con la cmara .............................................. 78

    3.3.1. Funciones de highgui ................................................. 783.3.2. La clase VideoCaptureViewController .......................... 80

  • 3.3.3. La clase CvVideoCamera...................................................85

    4. Herramientas de desarrollo para Android 934.1. Perspectiva del desarrollo de aplicaciones Android........................934.2. Instalacin de ADT y el SDK de Android........................................954.3. El emulador de dispositivos Android...............................................984.4. Desarrollo directo sobre dispositivos fsicos .................................1024.5. Arquitectura de una aplicacin Android ........................................102

    4.5.1. Recursos..........................................................................1054.5.2. Actividades de una aplicacin y su ciclo de vida .............106

    4.6. Depuracin de aplicaciones Android ............................................1094.7. NDK de Android ...................................................................... 113

    4.7.1. Descarga e instalacin de NDK .......................................1134.7.2. Desarrollo con NDK .........................................................114

    4.8. OpenCV en Android ..................................................................... 121

    5. Visin por computador con Android 1255.1. Captura de imagen y vdeo en Android ........................................125

    5.1.1. Declaraciones en el Manifiesto de la aplicacin ..............1265.1.2. Uso de la cmara en una aplicacin de usuario............... 1275.1.3. Caractersticas soportadas por la cmara........................134

    5.2. Uso de OpenCV en Android ......................................................... 1415.2.1. Ejemplos incluidos en OpenCV4Android SDK.................1425.2.2. Proyectos Android con la API Java de OpenCV ..............145

    5.2.3. Proyectos Android con cdigo nativo C++ OpenCV . . 146

    Bibliografa 152

    Recursos online 153

    ndice de trminos 155

  • Acerca de los autores

    Oscar Dniz es profesor universitario desde 2003, primero en laUniversidad de Las Palmas de Gran Canaria y, desde 2008, en laUniversidad de Castilla-La Mancha. Obtuvo el ttulo de IngenieroInformtico por la Univ. de Las Palmas de Gran Canaria (1999) yms tarde el de Dr. en Informtica por la misma Universidad (2006,PremioExtraordinario).Hadesarrolladosucarrera investigadoraenvisinporcomputador,en laactualidaddentrodel grupoVISILABdelaUniversidaddeCastilla-LaMancha.En2009realizaunaestancia

    Post Doctoral en Carnegie Mellon University, EEUU. Es autor de ms de 50 artculos en revistas y congresos. Ha participado en ms de 20 proyectos de investigacin, 4con empresas privadas. Su tesis doctoral obtuvo el Accsit a la mejor tesis doctoralen reconocimiento de patrones y visin por computador durante el bienio 2005-2007, otorgado por la Asociacin Espaola de Reconocimiento de Formas y Anlisis deImgenes. Desde el ao 2000, ha impartido docencia en 23 asignaturas distintas, dentrode 5 titulaciones de dos Universidades Espaolas. En 2009 es finalista nacional delPremio Cor Baayen a investigadores jvenes en informtica y matemtica aplicada.En 2010 resulta ganador del Reto Image-File Manipulation & Reformatting Softwarede Innocentive Inc. Ha sido coautor de 3 libros de carcter docente y sus aportacionesestn presentes en las versiones oficiales de la librera OpenCV.

    Jess Salido es profesor desde 1999 en la Escuela Superior deInformtica de la Univ. de Castilla La Mancha (UCLM) en el Dpto. deIng. Elctrica, Electrnica, Automtica y Comunicaciones. IngenieroIndustrial (1990) y Doctor (1996) por la Univ. Politcnica de Madrid.Antes de su incorporacin a la UCLM, trabajo como becario deinvestigacin en el Instituto de Automtica Industrial (IAI-CSIC)y, durante dos aos realiz una estancia Post Doctoral financiada porel Programa Nacional de Formacin de Doctores en The Robotics

    Institute (Carnegie Mellon Univ., Pittsburgh, USA). Desde 2007 forma parte del grupode Visin y Sistema Inteligentes (VISILAB) de la UCLM. Es autor de varios artculoscientficos y otras publicaciones de carcter docente.

  • 8 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Gloria Bueno es profesora universitaria desde el ao 1995, primeroen Coventry University (UK) y, desde 2008, en la Universidad deCastilla-La Mancha, donde imparte docencia adscrito al Dpto. deIngeniera Elctrica, Electrnica, Automtica y Comunicaciones.Obtuvo el ttulo de Lic. En C. Fsicas en 1993 por la UniversidadComplutense de Madrid y ms tarde en 1998 el de Dr. en IngenieraIndustrial por Coventry University. Ha desarrollado su carrera

    investigadora en visin por computador en diversos centros, entre 1998 al 2000 enla Universit Louis Pasteur en Estrasburgo (Francia), del 2000 al 2002 en el Centrode Estudios e Investigaciones Tcnicas de Guipzkoa en San Sebastin y desde el2002 hasta la actualidad en VISILAB (Grupo de Visin y Sistemas Inteligentes) dela Universidad de Castilla-La Mancha. Es autora de ms de 50 artculos en revistas y congresos y ha participado en ms de 20 proyectos de investigacin de carcternacional, internacional y con empresas. Ha sido coautor de 3 libros de carcter docente.

  • Prlogo

    El desarrollo de la electrnica de consumo en los ltimos aos ha propiciadoque los dispositivos de comunicacin y computacin mvil (smartphones,tabletas, ...) estn penetrando vertiginosamente en la sociedad. Se estima quehoy en da este tipo de dispositivos supera a los PC en una relacin de 10 a1. Paralelamente se ha ido generando un mbito de negocio de dimensiones globales. El desarrollo de aplicaciones mviles es hoy en da una industria deenorme crecimiento. En particular, estn teniendo mucho xito en la actualidadtodo tipo de aplicaciones relacionadas con la imagen: realidad aumentada,retoque de fotografas, edicin de vdeo, interfaces gestuales, etc. Los propiosfabricantes de dispositivos estn haciendo a su vez una importante apuesta poraumentar las prestaciones de las cmaras mviles ya que, segn muestran lasestadsticas, actualmente se toman ms fotografas y se graban ms vdeos conlos dispositivos mviles que con cmaras fotogrficas y de vdeo dedicadas.

    Esta obra se ha concebido con carcter eminentemente prctico para ofrecerla informacin necesaria para afrontar el desarrollo de aplicaciones mvilesque empleen tcnicas de visin por computador y procesamiento de imagen. Laobra est dirigida a personas con conocimientos de visin por computador oprocesamiento de imagen, y puede utilizarse conjuntamente con otros textossobreestasdisciplinas.

    El libro destaca por su contenido muy prctico sobre un tema en extraordinariocrecimiento. La obra no entra en ningn detalle terico sino que se danbsicamente los pasos necesarios para alcanzar los fines del programador,a modo de recetario. Este enfoque es el que se muestra ms adecuado paracompetir en un dominio que se mueve a una espectacular velocidad. Otranovedad importante de esta obra es el tratar con profundidad el desarrollo deaplicaciones en los dos principales sistemas operativos de dispositivos mvilesactualmente existentes (Android e iOS), mientras que la mayora de los librosse decantan por uno u otro sistema.

    En laactualidad existen unos pocos libros sobre realidadaumentada y desarrollode juegos y aplicaciones multimedia para dispositivos mviles, algunos de ellosincluso han sido traducidos a nuestro idioma. En dichas obras se trata la imagencapturada generalmente como un captulo independiente, no siendo el tema

  • 10 PROGRAMACIN DE APPS DE VISIN VISILAB

    central. Esperamos que esta obra contribuya por tanto a aportar informacin tilen nuestro idioma que fomente el desarrollo de aplicaciones basadas en imagen.

    Lo que el libro incluye

    El libro se ha estructurado de la siguiente forma:

    Captulo 1: El captulo realiza una introduccin a la computacin mvil,sistemas operativos mviles y caractersticas de los modernos smartphones,poniendoespecial nfasisen lascapacidadesde los terminales relacionadasconla imagen y el vdeo.

    Captulo 2: En este captulo se cubren las principales herramientas necesariaspara desarrollar aplicaciones de visin empleando la librera OpenCV bajo iOS.

    Captulo 3: Se desarrollan ejemplos prcticos de aplicaciones de visin bajoiOS. El captulo culmina con un ejemplo de una aplicacin para leer textos enlos que el tamao de letra depende de la distancia del individuo al dispositivo.

    Captulo 4: En este captulo se cubren las principales herramientas necesariaspara desarrollar aplicaciones de visin empleando OpenCV bajo Android.

    Captulo 5: Se desarrollan ejemplos prcticos de aplicaciones de visin bajoiOS.

    A quin va dirigido el libro

    Existe una amplia comunidad de desarrolladores de aplicaciones de visin porcomputador y realidad aumentada que simplemente quisieran aprovechar lasnuevas plataformas mviles, y es a ellos a quienes va principalmente dirigida la obra. Se asume que el lector tiene al menos conocimientos bsicos de visin porcomputador y programacin. Ntese que la temtica tratada es muy amplia y nose trata cuestiones como manejo de los entornos XCode o Eclipse, ni tampoconingn lenguaje de programacin particular como pueda ser el Objective-C. Tampoco se cubre las funcionalidades de la extensa librera OpenCV. Para todoello existe ya otras obras editadas dedicadas, de las cuales referenciaremos lasqueconsideramos ms tiles.

  • VISILAB PRLOGO XI

    Feedback

    Los autores (ver emails abajo) agradecen cualquier sugerencia y comentarioque pueda contribuir al enriquecimiento futuro de la obra, as como erratas quesepudierandetectar.

    Ciudad Real, 29 de mayo de 2013

    scar Dniz, Jess Salido y M Gloria BuenoGrupoVISILAB

    {Oscar.Deniz, Jesus.Salido, Gloria.Bueno}@uclm.es

  • Agradecimientos

    Esta obra es el fruto del proceso febril en el que nos hemos visto inmersos enlos ltimos doce meses trabajando en la conjuncin de una disciplina ya maduracomo la visin artificial y otra, la computacin mvil, que ha experimentado unespectacular despliegue en los ltimos aos. Durante este tiempo nuestra laborha sido posible gracias al soporte de instituciones y personas a las que queremosmanifestar aqu nuestro sincero agradecimiento. A INDRA y Fundacin Adeccopor su apoyo y financiacin durante la realizacin del proyecto SAINET, ya que durante el mismo se inici nuestro trabajo en el mbito de las aplicacionesmviles y la visin artificial. A Juan Carlos Lpez, Director de la CtedraINDRA en la UCLM por su disponibilidad incondicional durante la realizacindel proyecto SAINET. A Jess, Fran, Sergio, Jairo, Christian y todos losintegrantes del Grupo VISILAB por su implicacin en un sueo comn.A Dorita, por regalarnos su tiempo y profesionalidad al disear la portadapara la versin impresa. A la Universidad de Castilla-La Mancha (UCLM) yal Depto. de Ing. Elctrica, Electrnica, Automtica y Comunicaciones dondedesarrollamos nuestra labor docente e investigadora. Y a todos aquellos que dealgn modo u otro han hecho posible que este trabajo salga adelante.

    No podemos olvidar un agradecimiento especial a todos aquellos lectoresque al comprar este libro o descargar su versin electrnica contribuyen a ladifusin de esta obra y de ese modo al desarrollo de futuros trabajos en la mismalnea.

  • CAPTULO 1

    Introduccin a la computacin mvil

    En este captulo se explica qu se entiende por un sistema de computacinmvil. As mismo, se describe de modo conciso las caractersticas principalesde los sistemas mviles haciendo especial nfasis en los aspectos hardware ysoftware de los mismos.

    1.1. Qu es un sistema de computacin mvil?

    Se habla de computacin mvil cuando se espera que el usuario disponga de un dispositivo transportable con el que interaccionar durantesus desplazamientos cotidianos. La movilidad afecta fundamentalmente a tresaspectos:

    1. Comunicaciones empleadas para transferencias de informacin directascon otros dispositivos y/o a travs de redes, teniendo en cuenta sustecnologas, protocolos y propiedades.

    2. Hardware que constituye los dispositivos mviles y sus componentes.3. Software que ejecutan los dispositivos.

    Recurriendo a una definicin ms formal podramos afirmar que:1

    [...] la computacin mvil es la tecnologa que habilita elaccesoarecursosdigitalesencualquiermomentoydesdecualquierlugar. Representa un componente adicional conveniente a lossistemas distribuidos convencionales. En un sentido ms amplio la computacin mvil representa la eliminacin de tiempo y espacio

    1Tomado de: George H. Forman and John Zahorjan. The Challenges of Mobile Computing,

    IEEE Computer, pgs. 38-47, abril 1994.

  • 16 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    impuestas por los ordenadores de escritorio y las redes cableadas[...]

    1.2. Comunicacionesmviles

    La computacin mvil asume que es posible la interconexin sin hilos

    a redes de datos. Dicha comunicacin emplea principalmente tres tipos deinfraestructura:

    1. Servicios de telefona mvil digital. Emplean tecnologas como GSM/2G

    (Sistema Global para Comunicaciones Mviles), GRPS/2.5G (ServicioGeneral de Paquetes Va Radio) y ms recientemente UMTS/3G (SistemaUniversal de Comunicaciones Mviles). Las distintas tecnologas difieren en su arquitectura, los protocolos y las bandas de frecuencia empleadas.Estas redes son accesibles gracias a varios operadores comerciales yestn disponibles all donde stos ltimos ofrecen cobertura. Su alcancese limita al rea de cobertura asociada a una antena fsica del sistema(celda). Su velocidad de transferencia2 vara desde los 144 Kbps (2G)hasta los 3 Mbps (3G) aunque esta velocidad suele quedar reducida dependiendo del operador de telefona y las condiciones particulares dela transmisin (p. ej. interferencias, movimiento, etc.).

    2. Redes locales inalmbricas de datos (WLAN). Define a un conjunto

    de redes inalmbricas basadas en el estndar 802.11 definido por elIEEE (Institute of Electrical and Electronics Engineers).3 Estas redestambin son conocidas como WiFi en virtud de su promocin por laWi-Fi Alliance4 que es una asociacin comercial que certifica si un producto respeta el estndar y por tanto permite la interoperabilidad conotros productos certificados. Estas redes ofrecen tasas de transferencia dependientes del estndar empleado, pero en general son superiores alas ofrecidas mediante 3G, llegando en el caso del estndar 802.11g alos 54 Mbps.5 En este tipo de redes la tasa de transmisin tambin se veafectada por las interferencias y la distancia que separa a los dispositivos

    2La velocidad de transferencia de informacin en una red se mide en bits por segundo (b/s) o

    sus mltiplos kilobits por segundo (kb/s). En esta obra tambin se emplear la denominacinanglosajona kbps y derivadas.

    3http://www.ieee.org4http://www.wi-fi.org5Actualmente ya existen productos en el mercado que cumplen con el estndar 802.11n y

    alcanzan tasas de transferencia cercanas a los 300 Mbps

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 17

    interconectados. El alcance puede variar desde una decenas de metros, en interiores, a varios centenares de metros en espacio abierto.

    3. Acceso a internet va satlite. Proporcionan acceso en aquellos lugares

    en los que no existe cobertura de redes mviles ni WiFi. Dichainfraestructurasebasa enla retransmisindeseales de radiocon unaredde satlites en rbita geoestacionaria. Su tasas de transferencia mximallegan a 1 Gbps y su alcance depende de la visibilidad de los satlites deenlace.

    El desarrollo de la computacin mvil ha impulsado la comunicacin entredispositivos mviles ms all de la conexin a redes de datos y as es posiblehablar de otras tecnologas inalmbricas que facilitan la interconexin entredispositivos mviles y entre estos y otros dispositivos perifricos de E/S. Enestoscasossehabla deredes inalmbricaspersonalesde rea local (WPAN). Setrata, por tanto, de tecnologas concebidas para comunicacin a corta distanciacuyo rango vara desde varios centmetros a unos pocos metros. Algunas detales tecnologasson:

    Bluetooth. Es un estndar abierto propietario concebido como unaalternativa sin hilos a la norma RS-232. Est gestionado por el Bluetooth SIG (Special Interest Group)6 que se encarga del desarrollo de laespecificacin y protege los intereses de las compaas adheridas algrupo. Su alcance vara desde varios metros (clase 2 y 3) a un centenar demetros (clase1),mientrasque las tasasdetransferenciavandesde1Mbps (ver. 1.2) a 3 Mbps (ver. 2.0 + EDR). A diferencia de la tecnologa WiFicuyo propsito es la sustitucin de las redes cableadas de datos, bluetoothest concebida para la interconexin de dispositivos mviles.

    NFC (Near Field Communication).7 Es una tecnologa que permitecomunicacin lenta (hasta 424 kbps) y un alcance no ms all de 10centmetros.Sedesarroll apartir de la tecnologa asociadaa lossistemasde identificacin por radio frecuencia (RFID) y al igual que sta permite la comunicacin con dispositivos pasivos (tags). El establecimiento deeste tipo de comunicacin es muy sencillo y rpido por lo que a vecesse emplea como mecanismo de inicio de comunicaciones inalmbricasde mayor capacidad como el emparejamiento de conexiones bluetooth oconfiguracin de conexiones WiFi.

    6http://www.bluetooth.org7http://www.nfc-forum.org

  • 18 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Tabla 1.1: Comparativa de diferentes tecnologas wireless

    (W)WAN (W)LAN (W)PAN Tecnologa 2G 3G Sat. WiFi 802.11g 802.11n Bluetooth NFC Velocidad (Mbps) 0,144 3 1000 54 150 3 0,424 Rango (m) >106 >106 >106 38-140 70-250

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 19

    automvil con funciones de asistencia a la navegacin (GPS) y gestin de los recursos de entretenimiento a bordo.

    Telfonos inteligentes (smartphones). Son telfonos de tamaoligeramente superior al convencional que poseen un amplio rango decaractersticas y en los que puede instalarse aplicaciones para aumentarsu funcionalidad. Pueden presentar teclado fsico y/o pantallas sensiblesal tacto.

    Figura 1.1: Distintos dispositivos mviles

    La clasificacin anterior no pretende ser exhaustiva, pues en realidad loslmites de cada una de las categoras son difusos y para algunos dispositivos es difcil encontrar una familia precisa. Por ejemplo, es posible encontrar en laactualidad tabletas que permiten la conexin a las redes de telefona mvil ypor tanto presentan caractersticas tpicas de un telfono inteligente.

    En la actualidad las ventas de dispositivos mviles, lideradas por lostelfonos inteligentes, ya superan a las de ordenadores personales (ver Fig. 1.2)y se estima que esta diferencia incluso se ample en los prximos aos[7, 8, 20].

    1.3.1. Arquitectura de procesadores

    La arquitectura x86 habitual de los sistemas de computacin de propsito

    general no result desde su inicio muy conveniente para las aplicaciones decomputacin mvil debido a su tamao fsico y elevado consumo. Se trata dela arquitectura CISC (Complex Instruction Set Computing) caracterizada por

  • 20 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    600,000

    de

    lones 300,000 PCs

    0,000

    Mill

    ones

    d

    unid

    ades

    2007 2008 2009 2010 2011 2012 Smartphones 122,135 139,287 172,376 296,646 467,701 630,476 PCs 264,000 290,500 302,000 350,100 364,000 404,000

    700,000

    600,000

    500,000

    400,000

    300,000

    Smartphones

    PCs

    200,000

    100,000

    0,000 2007 2008 2009 2010 2011 2012 (Fuente: Gartner)

    Figura 1.2: Evolucin de ventas de dispositivos mviles

    poseer un conjunto amplio instrucciones complejas entre datos almacenadosen memoria y/o registros internos del procesador, poco apropiada para laimplementacin de paralelismo pero conveniente para simplificar el cdigogenerado por los programas y las instrucciones de E/S precisando de menosmemoria. Por el contrario las arquitecturas RISC (Reduced Instruction SetComputing) emplean instrucciones ms simples dirigidas a conseguir mayoreficiencia por ciclo y mayor organizacin de las operaciones en el ncleo delprocesador.

    La arquitectura ARM es una arquitectura de instrucciones RISC de 32 bitsdesarrollada por ARM Holdings (concebida originalmente por Acorn ComputerLimited en 1983) que debido a su relativa simplicidad y bajo consumo8 se haconvertido con el tiempo en la arquitectura predominante de los procesadoresdigitales presentes en los sistemas de computacin mvil. Una consecuencia delas diferentes arquitecturas empleadas entre los sistemas de computacin, ya sean estos mviles o de escritorio, es que el cdigo no es portable entrelas distintas plataformas. As puede concluirse que la arquitectura x86 es

    8Generalmente por debajo de 1 W en condiciones normales y del orden de 1 mW en estado

    de bajo consumo.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 21

    al computador personal lo que la arquitectura ARM es a los sistemas decomputacin mvil.

    Tabla 1.2: Ejemplos de SoC empleados en los dispositivos mviles

    Fabricante Denominacin Tec. (nm) Applications Proc. (n) Frec. (GHz) GPU (n) MTring./s Dispositivo

    Samsung Exynos 4 (Quad) 32 ARM Cortex A9 (4) 1,4-1,6 ARM Mali-400 MP4 (4) > 44 Samsung Galaxy SIII NVIDIA Tegra3 (T33) 40 ARM Cortex A9 (4) 1,4-1,5 GeForce ULP (4) 26,7 HTC One X+ Qualcomm Snapdragon S4 (Pro) 28 Quadcore Krait (4) 1,5-1,7 Adreno 320 (4) 46,4 LG Optimus G Texas Instruments OMAP 4 (4460) 45 ARM Cortex A9 (2) 1,2-1,5 PowerVR SGX 540 10,9 Samsung Galaxy Nexus

    La arquitectura ARM puede desarrollarse bajo licencia lo que explica queexistan numerosos fabricantes que comercializan procesadores basados en dichaarquitectura con versiones diversas que difieren en sus caractersticas. En unos casos se emplea la arquitectura ARM de referencia para el diseo de la CPU(p. ej. Nvidia, Samsung y Texas Instruments) mientras que otros fabricantes sloadoptan el conjunto de instrucciones ARM (p. ej. Qualcomm y Marvell). Unade las principales novedades soportadas en la arquitectura ARM es la presenciade mltiples ncleos como en las arquitecturas ARM Cortex-A9 MPCore9 ySnapDragon S4.

    Mientras que en una arquitectura PC los diferentes circuitos integrados(entre los que se encuentra el microprocesador) se agregan en una placabase para constituir el sistema computador, en un sistema de computacinmvil se recurre a la tecnologa SoC (System on a Chip). La arquitectura SoCrene en un nico circuito integrado tanta funcionalidad como sea posiblecon el objetivo de reducir el espacio necesario y el consumo requerido parasu funcionamiento. De este modo los procesadores basados en SoC integranlas capacidades tanto computacionales (CPU) como grficas (GPU). Por ejemplo, los procesadores Hummingbird de Samsung integran una CPU10ARM Cortex A8 junto a un ncleo grfico PowerVR SGX 535; en el caso delos procesadores Tegra 2 de NVIDIA se dispone de una CPU ARM Cortex conuna GPU desarrollada por NVIDIA. La heterogeneidad de los procesadoresSoC dificulta las comparaciones de su desempeo entre ellos ya que se debeanalizar conjuntamente tanto su cualidades de cmputo (DMIPS)11 como sucapacidad grfica(triangulos/s).

    El principal salto cualitativo que se ha producido en las tecnologas desemiconductores empleadas en las arquitecturas hardware de los sistemas

    9Implementada en los chipset Exynos 4 (Samsung), Tegra 3 (NVIDIA), OMAP 4 (Texas

    Instruments), etc.10Generalmente se le denomina procesador de aplicaciones (applications processor).11Millones de instrucciones por segundo en el test Dhrystone.

  • 22 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    mviles es el paso de los 45 nm a los 28 nm. Con esta nueva tecnologase reduce el consumo y el tamao final de los circuitos integrados.

    1.3.2. Pantallas tctiles

    Las pantalla tctil es un dispositivo de visualizacin que es sensible al

    contacto fsico y por tanto se emplea, generalmente en equipos porttiles, comomecanismo de entrada y salida de informacin. Como su nombre indica estndiseadas para el contacto con los dedos o la mano, sin embargo tambinofrecen la posibilidad de activarse mediante lpices electrnicos (stylus). Estetipo de pantalla permite la interaccin directa con los objetos mostrados enpantalla, sin necesidad de un puntero controlado por un dispositivo adicional,como un ratn, y con la mano libre de otros dispositivos intermedios (salvocuando se usa un lpiz electrnico).

    Figura 1.3: Pantalla tctil

    Aunque el concepto data de la dcada de los sesenta (hace ms de 40 aos)

    ha cobrado popularidad con la aparicin de dispositivos mviles aparecidoshace pocos aos, especialmente con la llegada al mercado de los exitososproductos creados por Apple: reproductor iPod, tablet iPad y telfono inteligente iPhone. En la actualidad el abanico de dispositivos mviles que emplean unapantalla tctil como mecanismo de entrada es muy numeroso: reproductores multimedia, vdeo consolas, navegadores GPS, PDA, telfonos inteligentes,tabletaselectrnicas,etc.

    Para facilitar la introduccin de texto escrito, se puede emplear programasde reconocimiento de escritura o bien teclados virtuales en pantalla, aunqueno estn concebidas para un uso prolongado o para aplicaciones que requieranintroduccin masiva de texto. Para facilitar la introduccin de texto con ayudade los teclados virtuales se recurre a la realimentacin sonora (mediante un pitido) o hptica (mediante vibracin). Adems los desarrollos ms recientes de

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 23

    los sistema operativos de dispositivos porttiles contemplan el reconocimiento de voz como mecanismo complementario de entrada a los teclados virtuales.

    Las pantallas tctiles emplean bsicamente dos diferentes tecnologas quecondicionan tanto su precio como sus caractersticas:

    Resistiva. En sta el panel tctil comprime dos capas resistivas(elctricamente) separadas por un espacio muy delgado. Al comprimirmediante el contacto fsico esta estructura multicapa se provoca un parde tensiones elctricas, segn los ejes cartesianos, que es funcin dela posicin del punto sobre el que se ejerce la presin. Este tipo detecnologa es muy resistente ante los lquidos y otros contaminantespor lo que es muy apropiada para su empleo en restaurantes, plantasindustriales, hospitales, etc. Como principal desventaja debesealarse subaja sensibilidad al tacto y su bajo contraste.

    Capacitiva. Esta tecnologa consiste en un capa de material aislanterecubierta con una fina capa de un material conductor transparente. Esteconjunto constituye un condensador cuya capacidad se ve alterada con el contacto fsico de un material conductor, como un dedo o un lpizelectrnico especfico. El contacto del material conductor modifica lacapacidad del conjunto y este cambio se procesa para poder obtenercon precisin la posicin del contacto. Esta tecnologa ofrece mayorsensibilidad al contacto, sin embargo no funciona cuando el contacto serealiza con elementos aislantes, como puede ser una mano cubierta porun guante, lo que dificulta el uso de este tipo de tecnologas en tareas querequieran la proteccin de la mano (p. ej. hospitales, laboratorios, etc.) yen climas fros.

    Debido a su uso tctil, las pantallas pueden presentar problemas con las

    manchas que dejan las huellas dactilares sobre su superficie. Para evitarlo suelenir recubiertas de materiales que repelen la grasa.

    La tecnologa de visualizacin que emplean las pantallas tctiles esprincipalmente de tipo OLED (Organic Light Emitting Diode). En este tipode diodos LED la capa electroluminiscente est formada por un compuestoorgnico que emite luz cuando es excitado mediante una corriente elctrica.Existen dos esquemas de desarrollo de pantallas OLED: las de matriz pasiva(PMOLED) y las de matriz activa (AMOLED). Las segundas requieren deuna capa trasera de transistores encargados de la conmutacin de cada pixelindividual. Frente a los primeros, este esquema permite mejorar la resolucin y

  • 24 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    conseguir un mayor tamao de pantalla. Al no precisar retroiluminacin, comoocurre con la tecnologa LCD, presentan una serie de ventajas frente a stas:

    Mejora en los niveles de negro, mayores ngulos de visin y nivel debrillo.

    Menores tiempos de respuesta con tiempos de refresco hasta 100 kHz.

    Las pantallas son ms ligeras, delgadas y flexibles.

    Su consumo energtico es menor. A pesar de sus indudables ventajas, la tecnologa OLED presenta an algunasdesventajas que es preciso sealar:

    Elevados costes de produccin.

    Vida til. Debido a la prdida de propiedades de los materiales orgnicoscon el tiempo, una pantalla OLED tarda generalmente unas 14.000 horas(8 horas diarias durante 5 aos) en ver reducido su brillo a la mitad. Porel contrario las pantallas LCD tienen un periodo de vida que oscila entrelas 25.000 y 40.000 horas.

    Balance de color. Los materiales que generan el color azul en las pantallasOLED se degradan ms rpidamente que aquellos que producen otroscolores, en consecuencia el balance de color sufre una distorsin con elpaso del tiempo. Esta distorsin se compensa parcialmente mediante unacircuitera dedicada.

    Resistencia al agua. El agua puede daar los componentes orgnicos deeste tipo de pantallas por lo que es necesario un recubrimiento que lasproteja.

    Desempeo ante luz solar directa. La cantidad de luz ambiental reflejadapor las pantallas OLED es muy elevada frente a otras tecnologas (80%frente al 33 % de las pantallas de tinta electrnica)12 provocando unalegibilidad pobre en entornos con luminosidad ambiental elevada.

    Consumo elctrico. El consumo elctrico depende del color mostrado enla imagen. As para una imagen de color negro el consumo puede oscilar

    12Valores aproximados.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 25

    entre el 60-80 % de un LCD. Sin embargo, el consumo se triplica cuando se muestra una imagen con fondo blanco tal como ocurre en el caso depginas web.

    Las caractersticas fsica ms importante de una pantalla son:13

    Tamao. Longitud de la diagonal de la pantalla.

    Resolucin. Es el nmero mximo de pxeles que puede mostrarse a lolargo y ancho de la pantalla.

    Densidad de pxeles. Es el nmero pxeles por unidad de superficie queposee la pantalla. Su valor se ofrece en pxels o puntos por pulgada (dpi).

    Densidad independiente (dp). Es una medida normalizada del nmerode pxeles de la pantalla que se emplea para la definicin de elementosgrficos sobre ella en un modo independiente de la densidad de pxeles.Un pixel independiente equivale a un pixel fsico en una pantalla de160 dpi, valor que se considera la densidad media de una pantalla. Laconversin de unidades dp a pixels es sencilla: pix = dp(dpi/160).

    1.3.3. Sistemassensoriales

    La universalidad que han ganado los sistemas computacionales mviles

    con la comercializacin masiva de los telfonos inteligentes ha provocado undespliegue creciente de los dispositivos sensoriales que amplan y diversifican la experiencia de usuario. A continuacin se hace un rpido repaso a los distintos sensores que puede encontrarse en lossistemas mviles:

    Sensor de luz ambiental. Estn destinados a extender la vida de lasbateras de alimentacin de los dispositivos mviles. Para ello ajustanlos parmetros de la pantalla a los valores de iluminacin ambiental paragarantizar la correcta visualizacin y reducir el consumo.

    Sensor de proximidad. Permite detectar la presencia de objetos en suproximidad sin que sea preciso el contacto fsico. Generalmente empleanla emisin de una onda electromagntica (p. ej. infrarrojo) y miden lasalteraciones que se producen en la recepcin de la misma por la presenciade los bjetos prximos. Este tipo de sensor es muy til en el caso de lostelfonos inteligentes pues permiten detectar cuando el usuario acerca su

    13http://developer.android.com/guide/practices/screens_support.html

  • 26 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    orejaalaltavoz.Deestemodosepuededesactivar ladeteccindeeventostctiles y ahorrar energa mediante la desactivacin de la pantalla.

    GPS. Sistema de posicionamiento global basado en la triangulacin delas seales recibidas desde una constelacin de 24 satlites en rbitaalrededor de la tierra a una altitud de 20.000 km. Este sistema es unsistema instalado y operado por el Departamento de Defensa de losEstados Unidos de Amrica pero existen varios sistemas alternativoscomo GLONASS (gestionado por la Federacin Rusa), Galileo (en fasede desarrollo por la Unin Europea) y Beidou (implementado por laRepblica Popular China). Su precisin depende del nmero de satlitesvisibles desde el receptor y puede llegar a ser del orden de varios metrosaunque con la utilizacin del sistema DGPS o diferencial se puedellegar a precisiones del orden de centmetros. Este sensor puede ofrecer informacin geogrfica diversa sobre el receptor: coordenadas, altitud,velocidad y rumbo. Esta es la informacin fundamental que ofrecen los sistemas mviles de navegacin. Para conseguir un posicionamiento inicial suficientemente rpido muchos dispositivos mviles emplean unreceptor A-GPS (GPS asistido) que resuelve los problemas asociadosal posicionamiento inicial reduciendo el tiempo en que se consiguepero para el que precisa de una conexin activa de datos (WiFi, UMTS,etc.). Estos sistemas conectan con un servidor de datos que proporciona informacin adicional empleada en el posicionamiento inicial.

    Acelermetro. Es un dispositivo electromecnico que permite medir los cambios de velocidad que experimenta, esto es, sus aceleraciones. Puedenser de uno, dos o tres ejes segn las direcciones en las que puede medirla aceleracin. Existen muchos principios de funcionamiento de este tipode sensores pero los empleados en los sistemas mviles suelen ser de tipopiezoelctrico por su reducido tamao. En este tipo de sensor una masainercial sujeta por un resorte comprime un material piezoelctrico bajoefecto de la aceleracin que sufre la carcasa que contiene al conjunto.El material piezoelctrico genera una tensin elctrica proporcional a ladeformacin que sufre. En los sistemas mviles este sensor se empleapara detectar los cambios de orientacin que sufre el dispositivo y enconsecuencia modificar el comportamiento del software (p. ej. alterandola orientacin de visualizacin en pantalla).

    Girscopo. Proporciona informacin que permite medir o mantener laorientacin relativa a tres ejes. Se basan en el principio de conservacin

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 27

    del momento angular y usualmente complementan a la informacinque suministra el acelermetro ofreciendo informacin de movimientosegn tres ejes de desplazamiento (izquierda/derecha, arriba/abajo yadelante/atrs) y tres ejes de giro (cabeceo, alabeo o balanceo y guiadao viraje).14 En los dispositivos mviles se emplea para determinar suposicin y orientacin.

    Brjula. Est constituido por un elemento sensorial de efecto Hall quees capaz de detectar la presencia de campos magnticos, en concreto elterrestre y as determinar la direccin norte/sur.

    Micrfono. Es un sensor que convierte una seal acstica en el rango de 20Hz-20kHz en una seal elctrica. Existen numerosos tipos demicrfonos y tecnologas en las que se basa su funcionamiento, pero enlos sistemas mviles suele tratarse de sistemas micro electromecnicos(MEMS) que emplean el efecto piezoelctrico para convertir las ondasde presin en seales elctricas. Tienen un sinfn de aplicaciones en lossistemas de computacin mvil, con una importancia especial en el casode los telfonos inteligentes.

    Cmara. Su propsito es captar imgenes fijas (fotografa o fotograma)o en movimiento (vdeo o pelcula) empleando algn mecanismo paraalmacenarlas. Las cmaras se han ido poco a poco incorporando a lossistemasdecomputacinmvilenlosqueaadennuevasfuncionalidades:como cmara fotogrfica y vdeo, vdeo conferencia, vdeojuegos,realidadaumentada,etc.

    Otros. Los sistemas mviles tambin pueden incorporar otros sensoresms especializados como son los de temperatura y presin atmosfrica, etc.

    1.3.4. Cmaras mviles

    Debido a la importancia de las cmaras en el propsito de esta obra, acontinuacin se realiza una revisin ms detenida de los aspectos relacionadoscon las cmaras en los sistemas de computacin mvil.

    Las cmaras en los sistemas de computacin mvil se pueden clasificar endos grandes familias dependiendo de su propsito principal:

    14Eningls: pitch, roll yyaw, respectivamente.

  • 28 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Cmaras web. Nacen a principios de los noventa con el propsito de captar una imagen en movimiento para retransmitirla a travs de redes digitalesde datos. Algunas de sus principales aplicaciones son la vdeoconferenciay la vdeovigilancia. Estn constituidas por una lente, un sensor deimagen, circuitera electrnica de soporte y, la mayora, incluye tambinun micrfono. Aunque algunas son de enfoque fijo, presentan un sistemarudimentario de ajuste de enfoque mediante el giro manual del soportede la lente (ver Fig. 1.4). Sin embargo, la limitacin del enfoque en estascmaras no afecta, hasta cierto punto, a la nitidez de la imagen debido asu gran profundidad de campo.15 En las cmaras de bajo coste el sensorde imagen suele emplear tecnologa CMOS con una resolucin VGAde 640x480 pixels a 30 fps (fotogramas por segundo). La electrnicade soporte capta la imagen del sensor de imagen transmitiendo cada fotograma al computador bien en formato RGB o YUV sin comprimir oJPEG comprimido.

    Figura1.4: InteriordeunacmarawebUSB

    Cmaras fotogrficas y de vdeo. Este tipo de cmaras se concibe parasu instalacin en un telfono mvil y aparecen por primera vez en elmercado hacia mediados de los noventa. Inicialmente sus caractersticasdiferan poco de aquellas presentes en las cmaras web (pequeotamao del sensor, enfoque fijo, pobre desempeo en condiciones debaja luminosidad). Sin embargo, con el paso del tiempo su calidadha aumentado y sus especificaciones son cada vez ms prximas a lasde una cmara fotogrfica digital compacta llegando a los 12 Mpx deresolucin del sensor de imagen y HD 1080p (1920x1080) para vdeo. En

    15La profundidad de campo es mayor para formatos de imagen reducido y pequeas aperturas(nmero f).

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 29

    la actualidad la presencia de una cmara es una de las seas de identidadde los telfonos inteligentes16 y comienza a serlo igualmente en lastabletas electrnicas. Incluso la tendencia actual es la incorporacin dedos cmaras, una trasera para la captura de foto fija y vdeo, y otra frontalms sencilla para funciones de vdeoconferencia. La popularidad de estetipo de cmaras est avalada por el nivel de ventas que alcanzan en elmercado. Ya en el ao 2003 se vendieron ms telfonos mviles con cmara que cmaras fotogrficas dedicadas.

    Figura 1.5: Cmara en telfono inteligente

    Generalmente las hojas de caractersticas de las cmaras mvilessuministradas por los fabricantes aportan poca informacin haciendo especialnfasis en aquellas especificaciones que son ms fcilmente asumidas, a menudoerrneamente, como un sinnimo de calidad por el consumidor final.

    Como se ha comentado ms arriba las caractersticas de las cmaras mvilesson cada vez ms similares a las de cmaras digitales compactas dedicadas. Eneste sentido es comn el prejuicio, potenciado interesadamente por las firmascomerciales, de que la calidad de una cmara es nicamente funcin de laresolucin del sensor que incorpora. En realidad la calidad de una imagen es elresultado de una suma de factores como son: la resolucin del sensor, el tamao del sensor, la ptica empleada y la sensibilidad a la luz (por mencionar los msimportantes). A continuacin se realiza un repaso sobre aquellas caractersticas en las que an existen diferencias importantes entre las cmaras mviles y lasdedicadas:

    Tamao del sensor de imagen. Ya que en la cmaras mviles se intentareducir el tamao tanto como sea posible, los sensores son ms pequeosque en las cmaras dedicadas. Aunque existe un guerra comercial por

    16En el ao 2006 la mitad de los telfonos mviles operativos a nivel mundial posean cmara.

  • 30 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    ofertar cada vez ms pxeles en el menor espacio posible, se debe tenerpresente que para el mismo tipo de sensor cuanto mayor es su tamaomejores son el rango dinmico y la relacin seal/ruido (SNR). Lostamaos de los sensores rondan 1/4 para resolucin de 8 Mpx aunqueSony ha anunciado el lanzamiento de un sensor de 1/3,06 con resolucinefectiva de 13 Mpx para junio de 2012.

    ptica y enfoque. La ptica de las cmaras mviles ha mejoradomucho desde que comenz su comercializacin, en la actualidad losfabricantes estn incorporando pticas de gran calidad, como Carl Zeiss.Siempre se trata de pticas fijas pero se ha pasado del enfoque fijo alenfoqueautomtico permitiendo incluso la fotografa de detalles a escasoscentmetros (macro). Debido a las limitaciones de espacio, el zoom de lascmaras mviles no es ptico por lo que, en ningn caso, se gana nitidezen los detalles capturados mediante su uso.

    Apertura. En las cmaras mviles, la apertura es fija y la tendenciaes emplear aperturas grandes (f pequeos, p. ej. f2.8 en el iPhone 4S) persiguiendo mejorar la sensibilidad en condiciones de baja luminosidad.

    Velocidad de obturacin. Las cmaras mviles carecen de obturadormecnico para reducir al mximo su tamao por este motivo siempre esapreciable un indeseable retardo en la obturacin. Esto unido a la menorsensibilidad de estas cmaras provoca que los tiempos de captura de laimagen sean superiores a los obtenidos con cmaras dedicadas haciendocasi imposible la captura de instantneas de objetos en movimiento. Sinembargo con el tiemposeha mejoradoconsiderablemente las velocidadesde obturacin llegndose a anunciar, en los ltimos lanzamientos comerciales (HTC One X), el retraso nulo de obturacin (no lagshutters).

    Disparo con flash. Aunque ya es habitual la incorporacin del flash, sudesempeo es muy limitado aunque menos importante segn mejora lasensibilidad en condiciones de baja luminosidad.

    Las innovaciones tecnolgicas en el campo de las cmaras mviles se

    producen de forma continua debido a la gran demanda del mercado. Segn revela un estudio del NPD Group, aproximadamente un cuarto de las fotografasy vdeos realizados se capturan con una cmara mvil [4]. Las innovaciones queya estn llegando al mercado mejoran considerablemente el desempeo de las

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 31

    cmaras mviles estrechando la frontera que las separa de aquellas dedicadas[5]. A continuacin se menciona algunas de las innovaciones presentadas porSony17 dirigidas a mejorar el desempeo de las cmaras en condiciones de bajailuminacin:

    Sensores CMOS con iluminacin trasera (del ing. backside-illuminatedCMOS sensor).18 Esta tecnologa (incorporada en el iPhone 4) consisteen desplazar la circuitera del sensor hacia la parte trasera del mismo, deeste modo la luz incide de modo ms directo sobre la superficie sensorialsin sufrir la dispersin provocada por la circuitera.

    Codificacin RGBW. Esta estrategia consiste en agregar pxeles blancosa la codificacin de la imagen para mejorar la sensibilidad del sensor sindegradacin aparente en la calidad de imagen captada.

    Vdeo HDR incorporado. En situaciones de exposicin a contraluz esdifcil conseguir una exposicin correcta de todas las zonas de la imagen.Las tcnicas HDR (del ing. High Dynamic Range) permiten trabajarcon distintas exposiciones sobre la misma imagen para conseguir laexposicin apropiadaen toda la imagen obteniendocolores ms brillantes. En losnuevossensoresdeSonyseconsigueadquirir vdeocondosvaloresde exposicin (uno para zonas claras y otro para las oscuras) para obteneruna imagen con un rango dinmico ms amplio.

    1.3.5. Bateras

    Los sistemas computacionales mviles dependen de fuentes porttilesde alimentacin elctrica que garanticen su correcto funcionamiento duranteel desplazamiento. Las fuentes de energa ms empleadas son las bateraselctricas recargables y su desarrollo constituye un rea incesante de trabajocuyo principal objetivo es conseguir bateras duraderas, ligeras, baratas yseguras. Desde su invencin han aparecido en el mercado numerosas tecnologascon un desempeocreciente. En la actualidad la gran mayora de los sistemas decomputacin mvil emplean bateras de iones de litio (Li-ion o LIB). Los ionesde litio se desplazan desde el electrodo negativo al positivo durante la descargay a la inversa durante la recarga. Las propiedades de la batera dependen de lacomposicin qumica especfica de los electrodos. A continuacin se resumealgunasdesuscaractersticasgenricascomparndolasconotras tecnologas:

    17http://www.sony.net/SonyInfo/News/Press/201201/12-010E/index.html 18Tambinson conocidos como sensores BSI o BI.

  • 32 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Densidad de energa. Son capaces de almacenar ms energa por unidadde masa que otras tecnologas (aprox. el doble que las bateras NiMH).Por este motivo para una capacidad dada son las ms ligeras y por tantoms convenientes para dispositivos mviles.

    Pequea prdida de carga en reposo. Todas las bateras reducen su cargacon el paso del tiempo aunque no se utilicen, pero las LIB slo pierde un5-10 % al mes frente al 20-30 % para las NiMH.

    Multitud de tamaos y factores de forma aunque debido al voltaje decada celda (3,7 V) no son convenientes para formatos AAA, AA, C o D.

    A pesar de las ventajas que tiene, la tecnologa LIB presenta algunosinconvenientes a considerar:

    Inseguridad a alta temperatura. Su temperatura se debe vigilar puespueden sufrir deterioro e incluso entrar en combustin.

    Vida til. Su funcionamiento se degrada con el paso del tiempoindependientementedesuuso.

    Coste. Su precio por unidad de energa es algo ms elevado que el de otros tipos de bateras.

    Eltiempodeoperacinentrerecargasdependetantodelacapacidadefectiva

    (medida en mAh, miliamperios por hora) de la batera como del uso que sehaga del sistema mvil. Desgraciadamente el crecimiento en el consumo delos dispositivos mviles ha sido superior al experimentado por la capacidadde las bateras desarrolladas en los ltimos aos. Sin embargo se recomienda unas pautas de uso para alargar el tiempo entre recargas, resumidas en la listasiguiente [30]:

    1. Bajar el brillo de la pantalla. Las pantallas actuales de los dispositivos

    mviles tienen una calidad y detalle excelentes pero a cambio presentanun elevado consumo de energa. Esta es la razn de que muchosdispositivos mviles dispongan de un modo automtico de ajuste delbrillo de la pantalla en funcin de la luminosidad ambiental. Por supuestouno puede ajustar manualmente el brillo reducindolo hasta el lmite quese considere compatible con una visualizacin confortable. Tambin sedebetenerencuentaelusoqueseesthaciendodelsistemayaque,segndemuestra un estudio reciente, el consumo de la pantalla puede llegar

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 33

    aumentar el triple en aquellas aplicaciones que poseen un fondo blanco (p. ej. la navegacin en pginas web).

    2. Reducir el intervalo de desconexin de la pantalla. La mayora de

    dispositivos mviles desactivan su pantalla transcurrido un tiempo deinactividad. De este modo se consigue una reduccin del consumo. Elintervalo de tiempo tras el cual se produce la desconexin es ajustable ypuede elegirse segn el perfil de uso del dispositivo.

    3. Desactivar aquellos mecanismos de conectividad que no estn en

    uso. Como se coment en la seccin 1.2 (pag. 16) una de lascaractersticas fundamentales de los sistemas mviles es su capacidadpara interconectarse de modo inalmbrico directamente entre ellos omediante redes de datos (bluetooth, WiFi, 3G, NFC, etc.). Mientras estnactivos, cualquiera de estos mecanismos consume energa aunque no seest utilizando. Por ello su desactivacin es un modo efectivo de reducirel consumo alargando la duracin de las bateras.

    4. Minimizar el uso del GPS. El GPS es un sensor empleado por numerosas

    aplicaciones para conocer la geolocalizacin del usuario de modo quepuede adaptarse la experiencia de usuario (p. ej. indicando qu usuarioso servicios se encuentran prximos). El consumo de este sensor esconsiderable y por tanto su uso reduce la autonoma. Por tanto, esrecomendable desactivarlo cuando sea innecesario y ser juicioso con su empleo.

    5. Detener las aplicaciones intiles ejecutadas en segundo plano. Puesto

    que los sistemas de computacin mvil emplean sistemas operativosmultitarea, todas aquellas aplicaciones que se ejecutan en segundo plano(background) consumen recursos (memoria y tiempo de proceso) yenerga. Por tanto, una buenaprctica escerrar (kill) aquellas aplicacionesquenoseanyanecesarias.

    6. Activar el modo de ahorro de energa. Los sistemas operativos ejecutados

    enlossistemasmvilessuelenproporcionarunmodode ahorrode energaque se activa cuando queda muy poca capacidad en las bateras. En estemodo de funcionamientose desactiva todosaquellossubsistemas quesonprescindibles. Por ejemplo en un telfono inteligente se mantendra laposibilidad de recibir y realizar llamadas pero desactivando algunossubsistemas: mecanismos de conectividad (WiFi, 3G y bluetooth),notificaciones, etc.

  • 34 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB 1.4. Seguridad de los sistemas mviles

    La seguridad de la informacin en los sistemas mviles se ha convertido

    en un aspecto crucial del desarrollo de sistemas de computacin mvil. Laseguridad se refiere a la proteccin de los siguientes aspectos:

    Datos. Tanto los datos almacenados localmente como los accesiblesmediante redes pueden ser sustrados o empleados con fines noautorizados por sus legtimos dueos.

    Identidad. Muchos dispositivos mviles almacenan datos personalesde usuarios que en caso de ser conocidos por terceros permiten lasuplantacin de la identidad de los primeros.

    Disponibilidad del servicio. En algunos casos los ataques contra un sistema pueden ir dirigidos a limitar o incluso impedir el acceso aservicios para los que dicho sistema fue concebido (p. ej. denegandoel servicio de acceso a las redes mviles).

    Las amenazas a la seguridad de los sistemas mviles se pueden englobar en

    tres grandes familias:

    1. Ataques a los sistemas de comunicacin mvil empleados.

    Ataques sobre WiFi. El empleo de redes mviles es ms crtico queel de las redes cableadas, desde el punto de vista de la seguridad,ya que el medio de transporte es accesible a cualquiera pudiendoescuchar inadvertidamente las comunicaciones. Un mecanismohabitual para proteger las comunicaciones en WLAN ha sido elempleo de cifrado mediante claves WEP19 que se ha mejorado conlos posteriores sistemas WPA y WPA2. Aunque estos mecanismoslimitan las posibilidades de xito de los ataques basados en fuerzabruta no garantizan la seguridad completa.Ataques a las redes de telefona mvil digital. A pesar de que lascomunicaciones de voz estn cifradas, estos sistemas pueden serdescifrados para tener acceso a todas las comunicaciones que tienenlugar en dichas redes. Los ataques en estas redes tambin puedenemplear el sistema de mensajera mvil: SMS y MMS. En estoscasos se explotan fallos en el sistema de gestin de los mensajes. Se

    19Sistema de seguridad muy dbil que puede ser violado en pocos minutos.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 35

    conocen casos de ataques DoS mediante el envo de SMS hostiles a terminales que no son capaces de gestionar algunos caracteresespeciales. En el caso de los MMS la base del ataque suele ser elenvo de un fichero adjunto que al ser abierto propaga la accin deataque (p. ej. gusano Commwarrior).Ataques sobre bluetooth. Cuando una aplicacin usa este tipo deenlace sin registrar el servicio que lo gestiona, es posible queotra aplicacin use dicho enlace sin necesidad de autenticacin.Como consecuencia el equipo anfitrin quedara a merced deuna aplicacin que explotase esta vulnerabilidad. Otros ataquesaprovechan en estado en modo descubrimiento de los equipospara enviar una aplicacin (p. ej. gusano Cabir) al equipo atacado yque el usuario habilita creyendo que se trata del proceso propio deintercambio.

    2. Ataques a las vulnerabilidades de las aplicaciones ejecutadas.

    Ataques a los navegadores Web. Los navegadores son programascomplejos que tanto en sus versiones de escritorio como mviles,estn expuestos a numerosas debilidades: phishing, pginas webmaliciosas, etc. Por desgracia en los sistemas mviles an noproliferan los programas antivirus tan habituales en los equiposde escritorio.Ataques al sistema operativo. Estos ataques son complejos yrequieren un conocimiento tcnico elevado pues consisten en lamodificacin del sistema operativo para acceder al dispositivo yganar control sobre l.

    3. Ataques mediante aplicaciones deliberadamente maliciosas (malware).

    Su objetivo es provocar un dao a travs de aplicaciones diseadasespecficamente con ese fin. Se conocen varias modalidades de estetipo de programas: troyanos, gusanos y virus.

    Las medidas para mejorar la seguridad se pueden implementar en varios

    mbitos:

    Sistemas operativos. Los sistemas operativos pueden incorporar tcnicasdirigidas a dificultar los ataques y/o limitar su alcance: deteccin deamenazas, islas de ejecucin, gestin de permisos, proteccin de memoria,etc.

  • 36 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Software de seguridad. Una contramedida imprescindible es el uso deprogramas dedicados a la proteccin contra amenazas (p. ej. cortafuegos,antivirus, etc.), deteccin de las mismas y limitacin de daos.

    Monitorizacin de recursos. Muchas amenazas pueden detectarsemediante el uso inusual de los recursos del sistema: consumo, uso dememoria, trfico de datos, servicios activos, etc.

    Vigilanciaenredes.Monitorizandoel trficoen las redespuededetectarsecomportamientos anormales o sospechosos.

    Mecanismos de seguridad por parte del fabricante. Durante la cadena deproduccin y distribucin de los dispositivos mviles se puede adoptarmedidas que contribuyan a aumentar la seguridad de los sistemas:desactivacin del modo de depuracin, ajustes por defecto, auditorade aplicaciones publicadas por terceros, deteccin de aplicaciones sospechosas que demanden privilegios de acceso, desinstalacin (revocacin)deaplicacionessospechosas,etc.

    Buenas prcticas del usuario. Muchas amenazas a la seguridad tienensu origen en el descuido del usuario y su falsa percepcin de seguridad.Por este motivo es muy conveniente asegurar una actitud adecuada frentea las potenciales amenazas: manteniendo cierto grado de desconfianza,siendo cuidadoso, asegurando los datos, gestionando apropiadamente losprivilegios otorgados a las aplicaciones, etc.

    1.5. Sistemas Operativos mviles

    Se denomina sistema operativo mvil al encargado de controlar un

    dispositivo mvil: PDA, tableta digital, telfono inteligente, etc. Por tanto suaparicin coincide con la comercializacin de los primeros dispositivos mviles (telfonos) aparecidos a finales de la dcada de los 70. Estos primeros SO sonsistemas dedicados especficos para cada dispositivo. Desde ese momento sehan sucedido diferentes desarrollos con mayor o menor xito. Los principaleshitos en funcin de su impacto en el sector podra quedar resumido as:

    1996. Comercializacin de la PDA Palm Pilot 1000 con el SO Palm OSy los primeros PC de mano (handheld) con Windows CE.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 37

    2000. Aparicin en el mercado del telfono mvil Ericsson R380equipado con Symbian, considerado el primer SO para telfonosinteligentes.

    2007. Apple presenta el iPhone, gobernado por iOS, con capacidades dereproductor multimedia, telfono mvil y comunicador con internet.

    2008. La Open Handset Alliance (OHA) libera bajo licencia Apache laversin Android 1.0 para el primer telfono inteligente Android que es el HTC Dream.

    2010. Microsoft pasa a denominar como Windows Phone su plataforma mvil (versin 7) derivada del SO Windows CE y que previamente habapasado por las versiones Pocket PC (2000) y Windows Mobile (2003).

    2012. Microsoft lanza al mercado Windows 8 una plataforma con propsito universal.

    Mientras Symbian y Windows Phone surgieron con un objetivo claramente

    dirigido al control de los telfonos inteligentes, iOS y Android se presentancomo SO comn a todas las plataformas de computacin incluso los sistemasde escritorio. En este sentido Symbian se ha quedado atrs y su gran descensoen los ltimos aos as lo confirma (ver Fig. 1.6).20 Aunque Microsoft habamantenido claramente la distincin entre los SO mviles y los de equipos deescritorio, en la actualidad con el recin aparecido Windows 8 est dirigiendosu estrategia en la misma direccin que Apple con iOS y la OHA con Android.

    1.5.1. iOS

    Este SO desarrollado por Apple Inc. en 2007 y actualmente en su ver. estable6.0, fue originalmente denominado iPhone OS, y diseado para el control dedicho telfono y el reproductor multimedia iPod touch. Posteriormente esteSO ha extendido su soporte a la tableta iPad y la Apple TV. A diferencia deAndroid y Windows Phone, Apple no licencia el uso de iOS para hardware deotras compaas.

    iOS deriva de Mac OS X cuyos componentes bsicos proceden de Darwin,un SO Unix de cdigo abierto conforme al estndar POSIX liberado por Apple

    20Los valores mostrados para el ao 2012 estn basadas en estimaciones de evolucin demercado.

  • 38 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    2009 2010 2011 2012 Symbian 80,878 111,576 89,930 32,666 Android 6,798 67,224 179,873 310,088 Research in Motion 34,346 47,451 62,600 79,335 Apple 24,889 46,598 90,560 118,848 Microsoft 15,031 12,378 26,346 68,156 Otros 10,432 11,417 18,392 21,383

    Total (millones uds.): 172,374 296,644 467,701 630,476

    Microsoft

    11%

    Apple 19%

    Otros

    3% Symbian

    5%

    Android 49%

    Research in Motion

    13%

    (Fuente: Gartner)

    Figura 1.6: Evolucin de ventas mundiales de telfonos inteligentes por SO y cuota demercado estimada

    Inc. en el ao 2000. Darwin posee cdigo desarrollado por Apple derivado deNeXTSTEP, BSD y de otros proyectos de software libre.

    Este SO gestiona el hardware de los dispositivos y proporciona el conjunto de herramientas necesarias para desarrollar aplicaciones nativas empleandoel lenguaje de programacin Objective-C. Con el SO tambin se incluyenvarias aplicaciones que proporcionan servicios bsicos de usuario, como: Phone(gestin del telefono), Mail (correo electrnico) y Safari (navegador web).

    Las aplicaciones desarrolladas con el SDK (Software Development Kit) deiOS se instalan en los dispositivos desde iTunes que es el gestor de contenidosde los dispositivos gobernados por iOS. Las aplicaciones se pueden descargardesde la tienda en lnea de Apple (App Store)21 que en junio de 2012 disponade un catlogo de mas de 650.000 aplicaciones con un volumen de descargastotales de 30.000 millones hasta dicha fecha.

    En conjunto el SDK de iOS consta de los siguientes componentes:

    Xcode. Entorno integrado de desarrollo (IDE) que proporciona lasherramientas para el desarrollo de aplicaciones: edicin, compilacin,ejecuciny depuracin delproyecto en el queseconstruye unaaplicacin.

    Instruments. Herramienta de anlisis de desempeo y depuracin de laejecucin.

    Simulador. Es una aplicacin de escritorio que permite ejecutar laaplicacin iOS sin necesidad de emplear el dispositivo destinatario. Unaparticularidad del desarrollo de aplicaciones para la plataforma iOS es

    21Esta tienda se presento en el ao 2008.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 39

    Figura 1.7: Pgina de inicio de iOS

    la necesidad de inscribirse en el programa de desarrollo de Apple si sedesea probar las aplicaciones en un dispositivo fsico.

    Librera de desarrollo. Son el conjunto de libreras que implementan lastecnologas empleadas en iOS y que durante el proceso de construccinson enlazadas estticamente en la aplicacin de usuario.

    Es posible crear dos tipos de aplicaciones para iOS:

    Aplicaciones nativas. Son aplicaciones de usuario que slo son accesiblesdesde la pantalla del dispositivo. No es posible crear otro tipo de cdigocomo libreras dinmicas, frameworks, drivers, etc.

    Aplicaciones web. Son aplicaciones interactivas alojadas en un servidorweb que se descargan a un cliente mediante la conexin de datos y seejecutan dentro del navegador Safari. No pueden ejecutarse sin el accesoal servidor donde se alojan. Pueden estar compuestas por cdigo HTML,hojas de estilo (CSS) y JavaScript.

    1.5.1.1. Interfaz de usuario en iOS

    En iOS Apple present un amplio conjunto de ideas novedosas, muchas de

    las cuales han tenido un gran aceptacin entre los usuarios y han sido adoptadasen otros SO. En lo relativo a la interfaz de usuario iOS es de tipo multitctilya que permite el reconocimiento de mltiples pulsaciones y gestos cuya

  • 40 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    filosofa es la manipulacin directa de los objetos en pantalla. Los elementosde control de la interfaz consisten en barras de desplazamiento, interruptores ybotones sobre los que actua el usuario obteniendo una respuesta inmediata yfluida. La interfaz reconoce varios tipos de gestos (arrastre, golpe, pellizco ycontrapellizco)22 cuyo significado depende del contexto en que se producen.La interfaz responde tambin a cambios en la orientacin del dispositivo (modode presentacin vertical o apaisado) e incluso a su vibracin, para lo cualemplea los sensores internos de aceleracin (acelermetros) integrados en losdispositivos.

    La entrada de texto en las aplicaciones que lo requieren se realiza medianteun teclado virtual mostrado en pantalla. Mediante presin prolongada de lasteclas se muestran caracteres similares. Como parte del sistema iOS 6 se ha incluido (19 septiembre 2012) la aplicacin Siri. Se trata de asistente inteligentedigital que interpreta las rdenes verbales del usuario. Se trata de una aplicacinque emplea una interfaz de lenguaje natural para responder a preguntas, realizarrecomendaciones y realizar acciones asociadas a las peticiones por delegacina un conjunto de servicios web.

    1.5.1.2. Arquitectura de iOS

    Al ms alto nivel iOS acta como una capa intermediaria entre el hardware

    del dispositivo y las aplicaciones que aparecen en su pantalla. Generalmentelas aplicaciones acceden a las funciones del hardware mediante un conjunto deinterfaces bien definidos que aislan las aplicaciones de los cambios que puedanproducirse en el hardware. De este modo es posible desarrollar aplicacionesque sean consistentes entre dispositivos con diferente hardware, aunque en laprctica, siempre es preciso tener en cuenta las peculiaridades de los dispositivos(p. ej. algunos dispositivos no poseen cmara). Por este motivo cuando unaaplicacin requiere la presencia de hardware especfico debe incluirlo en la listade propiedades de la informacin asociada (Info.plist).

    La implementacin de tecnologas en iOS se puede visualizar como cuatrocapas organizadas segn su nivel de complejidad donde se ubican las librerasque permiten acceder a las distintas tecnologas de iOS [2]:

    1. Capa de sistema (Core OS),

    2. Capa de servicios (Core Services),

    3. Capa de medios (Media), y

    22Del ingls swipe, tap, pinch y reverse pinch, respectivamente.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 41

    4. Capa de interfaz (Cocoa Touch).

    En iOS cada librera recibe el nombre de framework entendiendo como talun directorio que contiene las libreras compartidas y el conjunto de recursos(ficheros de cabecera, imgenes, ayudas, etc.) que dan soporte a dicha librera ypermiten su uso. Estas capas de abstraccin orientadas a objetos encapsulan lafuncionalidad proporcionada por las capa de nivel inferior. As, siempre que seaposible sera deseable emplear los frameworks de ms alto nivel ya que de estemodo se tiene acceso a una funcionalidad compleja con una interfaz sencillaque oculta los detalles de bajo nivel. En cualquier caso los frameworks debajo nivel estn disponibles para que el usuario los utilice si as lo estimaconveniente.

    Ya que iOS deriva de los sistemas UNIX y muchas de sus tecnologas debajo nivel fueron desarrolladas como parte de proyectos de cdigo abierto,dichas tecnologas se proporcionan no como frameworks sino como librerasestndar compartidas y directorios de interfaz.

    1.5.1.3. La capa Cocoa Touch

    Esta capa consta de los frameworks clave para la construccin de las

    aplicacioneseniOS. Endichacapaseorganizan las librerasqueproporcionan la infraestructura bsica de las aplicaciones empleando tecnologas fundamentalescomo multitarea, entrada multitctil, notificaciones push23 y otros servicios desistema de alto nivel. Todas estas tecnologas se pueden resumir en la siguientelista:

    Guiones grficos (storyboards). Desde la versin iOS 5 sustituyen a losficheros nib (NeXT Interface Builder) como la opcin recomendada parael diseo de las interfaces de usuario.

    Soporte de documentos. Permite la gestin de los documentos de usuarioy permite la construccin sencilla de aplicaciones basadas en ellos.

    Multitarea. Las aplicaciones desarrolladas con el SDK 4.0 o superiores yque se ejecutan en iOS 4.0 y posteriores no finalizan la ejecucin cuandose pulsa el botn de Inicio. Por el contrario pasan a segundo plano ydebe existir un conjunto de procedimientos para que la transicin entredistintos planos de ejecucin se produzca sin errores. Para reducir elconsumo de la batera, las aplicaciones que pasan a segundo plano se

    23Emplea una conexin IP abierta permanentemente.

  • 42 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    suspenden casi inmediatamente de modo que aunque dicha aplicacin semantenga en la memoria principal, no se ejecutan ninguna instruccin.De este modo las tareas pueden regresar a primer plano de modoinmediato pero sin consumir energa en el intermedio. A pesar detodo, sigue siendo importante que algunas aplicaciones se mantengan en ejecucin aunque estn en segundo plano. Por ejemplo cuando setrata de tareas que necesitan cierto tiempo para completarse, cuando setrata de aplicaciones que se han declarado como un servicio bsico ocuando emplea notificaciones locales para generar alertas en momentosespecficos an cuando la aplicacin no est en primer plano. El soportede multitarea requiere la codificacin de acciones especiales cuandola aplicacin cambia de estado, momentos que son notificados a laaplicacin por el sistema.

    Impresin. A partir de iOS 4.2 se proporciona el soporte para el envode trabajos a una cola de impresin de modo inalmbrico desde losdispositivos iOS. El framework correspondiente facilita la gestin detrabajos en la cola de impresin.

    Proteccin de datos. El sistema proporciona una infraestructura nativapara proteger los datos de usuario mediante mecanismos de criptografa.Cuando una aplicacin declara como protegido un fichero, ste sealmacena en un formato cifrado. Mientras el dispositivo est bloqueadoel contenido de los ficheros protegidos es inaccesible tanto para laaplicacin como para cualquier potencial intruso. Sin embargo, cuando el dispositivo se desbloquea se genera una clave de descifrado que permite a la aplicacin el acceso a la informacin protegida. A partir de la versiniOS 5 se aaden varios niveles de seguridad sobre los ficheros protegidosque aaden mayor flexibilidad en el acceso a la informacin.

    Servicio de notificacin (Apple Push Notification Service o APNS). Estesistema permite avisar al usuario con nueva informacin incluso cuandola aplicacin no est en ejecucin. Empleando este servicio el usuario puede publicar notificaciones forzadas de texto, aadir un botn alicono de una aplicacin o forzar alertas sonoras en el dispositivo enun instante especfico. Este tipo de mensajes permite al usuario saber queexiste nueva informacin disponible en su aplicacin. El diseo de estemecanismo incluye dos partes. En la aplicacin se solicita la recepcin de notificaciones y se especifica las acciones a realizar cuando aquellas

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 43

    se reciban. En el lado del servidor hay que especificar el proceso degeneracin de notificaciones.

    Notificaciones locales. Este mecanismo complementa al anterior ylo simplifica al no depender de un servidor externo. Una ventaja delas notificaciones locales es que una vez programadas se realizanindependientemente de que la aplicacin est en ejecucin o no.

    Reconocimiento de gestos tctiles. Los reconocedores gestuales(introducidos en iOS 3.2) son objetos asociados a vistas de la interfaz deusuario para detectar los tipos de gestos ms comunes como pulsaciones,pellizcos, etc. A cada gesto se asocia una accin que es realizada cuandoelgestocorrespondienteesdetectado.

    Comparticin de ficheros. Este mecanismo permite a las aplicaciones hacer uso de los fichero mediante el uso de iTunes.

    Servicios PTP (peer to peer). Estos servicios facilitan la interconexin de dispositivos empleando bluetooth.

    Controles estndar de vistas del sistema. Estos controles estndarpermiten presentar al usuario vistas de interfaces estndar del sistemade modo que la experiencia del usuario sea consistente en diferentes aplicaciones. Algunos de los controles estndar se refieren a: mostrar yeditar informacin de un contacto, crear y editar eventos de calendario, componer un mensaje de correo electrnico, etc.

    Soporte de pantalla externa. Facilita la conexin de una pantalla externaa los dispositivos iOS mediante conexin cableada.

    1.5.2. Android

    La Open Handset Alliance (OHA) es un consorcio de ms de 80 empresas,

    liderado por Google, constituido en 2007 y dedicado al impulso de estndaresabiertos para dispositivos mviles. Desde su inicio la OHA ha abanderado elproyecto de desarrollo e implantacin del SO mvil abierto Android. Googleadquirio en 2005 la compaa de software Android Inc. embarcada en elproyecto de desarrollo del SO mencionado. En 2007, Google liber bajo licenciaApache el cdigo de Android, un SO para dispositivos mviles basado en Linux,para que todo aquel fabricante de hardware que lo deseara pudiera emplearloensusproductos.

  • 44 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    Figura 1.8: Pgina de inicio de Android 4.0

    Para la comercializacin de las aplicaciones Android, Google gestiona latienda en lnea Google Play Market.24 Mediante una aplicacin preinstaladaen Android el usuario puede descargar las aplicaciones compatibles publicadasen la tienda. A finales de 2011 el nmero de aplicaciones disponible en latienda rondaba las 500.000 y el nmero total de descargas superaba los 10.000millones. A finales de 2010 las cifras convirtieron a Android en la plataformalder a nivel mundial en el mercado de los telfonos inteligentes. Su cuota demercado en el primer cuatrimestre de 2012 alcanz el 56 % con 331 millonesde dispositivos en funcionamiento [22]. En la Tabla 1.3 se muestra un resumende los datos recogidos en un estudio reciente [36] que compara la penetracinde los distintos sistemas operativos mviles en ocho pases industrializados,entre ellos Espaa. Tambin se muestra el crecimiento experimentado en elltimo ao. En dicha tabla destacan las cifras que obtiene Android siendo delejos el sistema operativo ms extendido y con mayor crecimiento en los pasesincluidos en el estudio.

    Una de las principales caractersticas de Android es que se trata de un proyecto de cdigo abierto que puede utilizar cualquier fabricante de hardwaree incluso personalizar a sus necesidades. Esta cualidad de Android permite queexista compatibilidad de las aplicaciones con los dispositivos certificados en elprograma de compatibilidad de Android.

    24https://play.google.com/.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 45

    Ver. Denominacin API Difusin 1.5 Cupcake 3 0,1% 1.6 Donut 4 0,4% 2.1 Eclair 7 3,4% 2.2 Froyo 8 12,9%

    2.3-2.3.2 Gingerbread

    9 0,3% 2.3.3-2.3.7 10 55,5%

    3.1 Honeycomb

    12 0,4% 3.2 13 1,5%

    4.0.3-4.0.4 Ice Cream Sandwich 15 23,7% 4.1 Jelly Bean 16 1,8%

    Tabla 1.3: Distribucin y crecimiento de sistemas operativos mviles

    Espaa Mundo* ago-12 Crec. ago-12 Crec.

    Android 86,8% 29,1% 61,2% 9,0% RIM 6,3% -6,7% 3,8% -4,3% Apple 2,9% -5,1% 23,7% 0,4% Symbian 2,3% -16,6% 3,2% -6,7% Microsoft 1,4% -1,0% 4,8% 1,2% Otros 0,3% 0,3% 3,4% 0,4%

    *Mundo: USA, Australia, Brasil, UK, Alemania, Francia, Italia y Espaa. (Fuente: Kantar Worldpanel)

    La principal plataforma hardware para Android es la arquitectura ARM(vese sec. 1.3.1) aunque existe un proyecto para ofrecer soporte a laarquitectura x86 (Android x86).

    Desde el lanzamiento de la primera versin denominada Astro se han idosucediendo regularmente nuevas versiones que aaden nuevas caractersticasy corrigen errores.25 La Fig. 1.9 resume las diferentes versiones de Androidaparecidas hasta octubre de 2012 y cual es su difusin en los dispositivosactualmenteenuso.

    Honeycomb 2%

    Jelly Bean 2%

    Ice Cream Sandwich

    23%

    Froyo 13%

    Eclair y anteriores

    4%

    Gingerbread 56%

    (Fuente: Android Dev.)

    Figura 1.9: Versiones de Android y su difusin

    25El convenio de nombres empleados para las sucesivas versiones desde la 1.5 denominadaCupcake hasta la actual 4.1 Jelly Bean emplea el nombre de un postre en progresinalfabtica.

  • 46 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    1.5.2.1. Interfaz de usuario en Android

    Al igual que otros SO mviles la interfaz de usuario de Android aprovechael uso de pantallas tctiles y sensores de orientacin para proporcionar unaexperiencia de usuario intuitiva, enriquecida y flexible. La interaccin con elusuario se realiza mediante gestos multitctiles y entrada textual a travs deteclado virtual en pantalla. En las ltimas versiones (desde la 2.2), Googletambin ha introducido la integracin del reconocimiento de voz (Google Voicefor mobile) para realizar bsquedas, activar acciones (p. ej. enviar SMS), eincluso completar campos de texto.

    1.5.2.2. Arquitectura de Android

    Android consta de un ncleo (kernel) basado en ncleo de Linux empleandoun middleware,26 libreras y API programadas en C. Las aplicaciones se ejecutanen un contexto Java que incluye libreras compatibles con Apache Harmonyque es una implementacin de Java de cdigo abierto.

    Aunque el ncleo de Android est basado en Linux no existe compatibilidadentre las aplicaciones para ambos SO ya que Android no soporta ni el sistemaX Windows ni el conjunto completo de libreras GNU.A continuacin se resume las principales caractersticas de Android:

    Diseo de interfaz. La plataforma se adapta tanto a los diseos clsicoscomo a los ms avanzados basados en elevadas resoluciones con especificaciones OpenGL que soportan el empleo de libreras grficas2D/3D.

    Navegador web integrado. Est basado en el motor WebKit de cdigoabierto.

    Almacenamiento. Utiliza la base de datos relacional SQLite. Esta BD,de dominio pblico, emplea una librera muy reducida especialmenteapropiada para sistemas empotrados. Tambin se proporciona soportepara almacenamiento externo mediante ranuras para tarjetas SD ymicroSD que pueden emplear formatos FAT32, ext3 o ext4.

    Conectividad. Soporta numerosas tecnologas incluyendo GSM/EDGE,UMTS, bluetooth WiFi, NFC, etc.

    26Software que permite a una aplicacin interactuar o comunicarse con otras aplicaciones,

    software, redes y/o sistemas operativos.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 47

    Mensajera. Adems de los tradicionales SMS y MMS, Androidproporciona un servicio de notificaciones push. Android tambin ofreceposibilidad de tethering que permite emplear el dispositivo como punto deenlace (hotspot) inalmbricocon la reda la quese encuentraconectadoel dispositivo.

    Soporte Java. Aunque las aplicaciones se programan en Java, Android noejecuta bytecode Java convencional sino que ste se compila en tiempode ejecucin para la mquina virtual Dalvik (DVM) especficamentediseada para dispositivos mviles con necesidad de optimizar susrecursos.

    Soporte de medios. Android proporciona soporte para los formatos demedios (audio, vdeo e imagen) ms comunes: MPEG4, H.264, MP3,AAC, AMR, JPG, PNG, GIF, etc.

    APLICACIONES

    Inicio (Home) Contactos Telfono Navegador ...

    FRAMEWORK DE APLICACIN

    Gestor de actividades

    Gestor de ventanas

    Proveedor decontenido

    Vista del sistema

    Gestor de paquetes

    Gestor de telefona

    Gestor de recursos

    Gestor de ubicacin

    Gestor de

    notificaciones

    LIBRERAS EJECUTABLE ANDROID

    Gestor de escritorio

    OpenGL | ES

    Framework demedios

    FreeType

    SQLite

    WebKit

    Libreras denucleo

    Mquina Virtual Dalvik (DVM)

    SGL SSL libc

    NUCLEO LINUXControlador de

    pantallaControlador de

    cmaraControlador dememoria flash

    Controlador Binder (IPC)

    Controlador de

    teclado

    Controlador

    WiFi

    Controlador de

    audioGestor deenerga

    Figura 1.10: Grfico de los componentes principales del SO Android

    La Fig. 1.10 muestra los distintos componentes del SO Android que se

    comentan en ms detalle en los prrafos siguientes.Android est basado en los servicios del ncleo de Linux 2.6 entre los que

    se encuentran: seguridad, gestin de memoria, gestin de procesos, pila de red

  • 48 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    y modelo de drivers. Este ncleo acta como una capa de abstraccin entre elhardware y el resto de la pila de software.

    Android incluye un conjuntode librerasqueproporciona la funcionalidadesencial del lenguaje de programacin Java. Cada aplicacin en Androidse ejecuta en su propio proceso sobre una instancia independiente de lamquina virtual Dalvik (DVM). Dicha mquina virtual, basada en registros, estoptimizada para que sea posible ejecutar varias instancias simultneamente demodo eficiente. El cdigo ejecutable para la DVM (.dex) se obtiene mediantecompilacin de las clases Java con la herramienta dx y est optimizado para sermuy compacto.

    Muchos componentes de Android emplean un conjunto de libreras C/C++cuyas funcionalidades quedan a disposicin de los desarrolladores mediante elempleo de las API suministradas por el framework de aplicaciones de Android.Entre las libreras esenciales se encuentran las siguientes:

    Librera C de sistema. Se trata de una implementacin de la libreraestndar C (libc) derivada de BSD y ajustada para sistemas mvilesbasados en Linux.

    Librera de medios. Permite el registro y reproduccin de diferentes formatos de audio, vdeo e imagen. Esta librera est basada en un desarrollo de la compaa PacketVideo perteneciente a la HOA.

    Gestin de escritorio (Surface manager). Facilita el acceso a la pantalla ypermite la composicin de capas grficas 2D/3D para las aplicaciones.

    LibWebCore. Es un motor de navegacin web que adems de constituirla esencia de la aplicacin nativa de navegacin puede ser incluido comoun componente en cualquier aplicacin de usuario.

    SGL. Motor grfico 2D.

    Libreras 3D. Se trata de una implementacin basada en las APIde OpenGL ES 1.0. para el rasterizado de grficos 3D mediante aceleracin hardware u optimizacin software.

    FreeType. Proporciona el rasterizado de letras (tipos) tanto vectorialescomo de mapa de bits.

    SQLite. Gestor de una base de datos potente pero muy liviana paraimplementar la persistencia de datos.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 49

    Androidsesuministraconalgunasaplicacionesnativasbsicasquepermitenla utilizacin de la funcionalidad bsica del dispositivo: cliente de correoelectrnico, navegador web, cliente de mensajera SMS, gestor de contactos,calendario,mapas,etc.

    Mediante del framework de aplicaciones los desarrolladores puedenconstruir nuevas aplicaciones en lenguaje Java empleando las mismas libreras que las aplicaciones nativas. El empleo de una arquitectura para las aplicacionessimplifica la reutilizacin de componentes de otras aplicaciones. Por ejemplo,unaaplicacinpuedeemplearelgestordecontactosparaseleccionaruncontactodeterminado.

    Toda aplicacin Android se construye en base a los componentesfundamentales siguientes:

    Actividad (Activity). Constituye la capa de presentacin de la aplicacin.De modo sencillo puede decirse que es cada una de las pantallas que sepresentan al usuario.27

    Vista (View). Son cada uno de los widgets de la interfaz de usuario, como botones, campos de texto, etc. La clase base de todas las vistas es android.view.Views cuyos atributos pueden modificarse paraalterar el aspecto visual y comportamiento del widget. Las vistas pueden agruparse mediante el gestor de layout con la clase baseandroid.view.viewGroups.

    Intenciones (Intents). Son mensajes asncronos que permiten a unaaplicacin solicitar funcionalidad de otro componente del sistema (p. ej.de servicios o actividades). Para hacer uso de ellos se puede llamarexplcitamente a un componente o bien solicitar al sistema la evaluacinde un componente registrado para responder a la solicitud (solicitudimplcita).

    Servicios. Realizan tareas en segundo plano sin proporcionar interfaz deusuario. Pueden enviar notificacin al usuario mediante el frameworkasociado a las notificaciones.

    Proveedores de contenido (ContentProvider). Proporciona una interfazestructurada para los datos de la aplicacin. Mediante este componentese facilita la comparticin de datos entre aplicaciones. Junto con este

    27Esto no es del todo cierto ya que existen actividades asociadas a dilogos o incluso a

    pantallas transparentes.

  • 50 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB

    mecanismo Android proporciona una base de datos SQLite para laimplementar la persistencia de datos.

    Receptor de retransmisin (BroadcastReceiver). Este componentepuederegistrarse para recibir mensajes tanto del sistema como intenciones deotra aplicacin. Este componente recibe una notificacin siempre que seproduzca la situacin asociada a dicho receptor. Por ejemplo, el receptorpuede recibir una notificacin cuando el terminal recibe una llamadatelefnica.

    Widgets. Son componentes interactivos que se emplean principalmenteen la pantalla de inicio (home screen) de Android. En ellos se muestrainformacin al usuario (p. ej. nmero de mensajes sin leer) y permiteninteractuar con la aplicacin.

    Todas las aplicaciones para Android se programan usando el lenguaje

    Java y se compilan empleando las herramientas suministradas con el SDKde Android para generar un archivo con la extensin .apk que contiene elcdigo de la aplicacin. Una vez que la aplicacin (archivo .apk) se instala enel dispositivo, su ciclo de vida se circunscribe a un contexto de seguridadindividual impenetrable (sandbox). En este sentido Android proporciona losmecanismos que se seala a continuacin:

    El SO (multiusuario) asocia un usuario a cada aplicacin con un identificador nico (ID) que ni siquiera es conocido por la aplicacin sinonicamente por el sistema.

    El sistema asigna el mismo ID a los ficheros que son accesibles por laaplicacin. De este modo se asegura que el acceso a los datos slo esposible desde la propia aplicacin.

    El cdigo de cada aplicacin se ejecuta de modo aislado en su propiamquina virtual.

    Cada aplicacin se ejecuta, por defecto, en un proceso Linuxindependiente que se inicia cada vez que uno de los componentes dela aplicacin necesita ejecutarse.

    Los mecanismos anteriores llevan a cabo el denominado principio de

    privilegio mnimo por el cual, si no se indica lo contrario, una aplicacinslo tiene acceso a los componentes precisos para desarrollar su funcin.

  • VISILAB Captulo 1: INTRODUCCIN A LA COMPUTACIN MVIL 51

    Sin embargo, tambin se proporcionan mecanismos para que las aplicaciones puedan compartir informacin entre s y para que stas puedan acceder a losservicios del sistema:

    Dos aplicaciones pueden compartir el mismo ID de usuario de modoque puedan compartir los ficheros accesibles por cada una de ellas. Estas aplicaciones tambin se ejecutan como un nico proceso Linuxcompartiendo una nica instancia de la mquina virtual, por lo que esnecesario las aplicaciones estn firmadas con un nico certificado.

    Una aplicacin puede solicitar permiso de acceso a los datos deldispositivo como la lista de contactos del usuario, los mensajes SMS,el almacenamiento en tarjeta SD, la cmara, bluetooth, etc. El permisode acceso a estos datos se otorga en el proceso de instalacin de laaplicacin.

    1.5.3. Windows Phone

    Windows Phone (actualmente en la ver. 8) es un SO desarrollado porMicrosoft que sucede a la plataformas previa Windows Mobile, aunque esincompatible con ella. Su objetivo, en lugar del empresarial, es el mercado deconsumo donde el volumen de negocio ha crecido de modo espectacular enlos ltimos aos [22]. Para facilitar la distribucin de contenido multimedia yaplicaciones de terceros tambin se ha abierto una tienda en lnea denominadaWindows Phone Marketplace y gestionada por Microsoft. En marzo de 2012 la tienda ya estaba disponible en 54 pases.

    Figura 1.11: Aspecto de la interfaz de Windows Phone

    El desarrollo de las aplicaciones para Windows Phone se basa en

    herramientas y tecnologas de Microsoft existentes (Visual Studio, Expression

  • 52 PROGRAMACIN DE APPS DE VISIN ARTIFICIAL VISILAB