Está en la página 1de 137

UNIVERSIDAD DE VIGO

ESCUELA TCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIN

PROYECTO FIN DE CARRERA

LECTURA AUTOMTICA DE INSTRUMENTOS DE MEDIDA MEDIANTE TCNICAS DE VISIN ARTIFICIAL

Autor: Esteban Vzquez Fernndez Tutores: Fernando Martn Rodrguez Arno Formella CURSO 2007/2008

LECTURA AUTOMTICA DE INSTRUMENTOS DE MEDIDA MEDIANTE TCNICAS DE VISIN ARTIFICIAL

Autor: Esteban Vzquez Fernndez Tutores: Fernando Martn Rodrguez Arno Formella CURSO 2007/2008

PFC desarrollado bajo beca OFOE

AGRADECIMIENTOS
Quiz sea sta una de las tareas ms complicadas a la hora de realizar la memoria del proyecto, pero antes de agradecer nada, he de pedir perdn por los errores que puedan estar presentes en esta documentacin. Estoy seguro de haber corregido todos los que he encontrado, pero tambin estoy seguro de no haber encontrado todos los que hay Cualquier error o aclaracin puede ser enviada a evazquez@lomg.net.

En segundo lugar y a riesgo de defraudar a aquellos que con entusiasmo buscaban esta seccin para tratar de reconocer nombres conocidos, siento decir que he decidido no nombrar a nadie en concreto. Es difcil hacer una seleccin cuando, por el simple hecho de que ests dedicando una parte de tu tiempo a leer este proyecto, debera estarte agradecido. En un principio, haba empezado a redactar una lista, pero cuando me he dado cuenta de las dimensiones que estaba adquiriendo, decid descartarla. No quiero olvidar a nadie por despiste, ni hacer una enumeracin impersonal de nombres

Solamente he de decir que, si al leer esto esperabas encontrar tu nombre, puedes estar tranquilo. Seguro de que debes estar aqu. Por ello, te doy las gracias.

LECTURA AUTOMTICA DE INSTRUMENTOS DE MEDIDA MEDIANTE TCNICAS DE VISIN ARTIFICIAL. Autor: Tutores: Esteban Vzquez Fernndez Fernando Martn Rodrguez Arno Formella

RESUMEN En el presente proyecto se describe el diseo, implementacin, comprobacin, puesta en funcionamiento y comparacin de resultados de un sistema que, automticamente, realiza la lectura de pantallas de instrumentos de medida a partir imgenes tomadas con una cmara fotogrfica. Se ha desarrollado en el Laboratorio Oficial de Metroloxa de Galicia (LOMG), con el objetivo de automatizar el proceso de calibracin de termmetros y termohigrmetros en el departamento de temperatura y humedad. Este trabajo enlaza con el proyecto Sistema de calibracin automtica de termohigrmetros de ngel Dacal Nieto, que se encarga de sincronizacin y toma de fotografas, pero no de la interpretacin. Esa ser tarea de este proyecto, que mediante la aplicacin de tcnicas de visin por computador, permite llevar a cabo la tarea de calibracin sin necesidad de ningn procesado posterior.

PALABRAS CLAVE Visin por computador Procesado de imagen Instrumentos de medida Lectura automtica OCR

NDICE

NDICE
CAPTULO 1 INTRODUCCIN.............................................................................................................1 1.1. OBJETIVOS .....................................................................................................................................2 1.1.1. MOTIVACIN DEL PROYECTO..........................................................................................2 1.1.2. OBJETIVOS CONCRETOS....................................................................................................3 1.2. PLAN DE TRABAJO .......................................................................................................................5 1.2.1. FASE PREVIA.........................................................................................................................5 1.2.2. PROTOTIPOS EN MATLAB..................................................................................................6 1.2.3. IMPLEMENTACIN Y PRUEBAS .......................................................................................7 1.2.4. IMPLANTACIN....................................................................................................................7 1.3. MEDIOS MATERIALES .................................................................................................................8 CAPTULO 2 RESUMEN TERICO .....................................................................................................9 2.1. VISIN POR COMPUTADOR......................................................................................................10 2.2. TIPOS DE IMGENES Y CARACTERSTICAS .........................................................................11 2.3. REPRESENTACIN DE IMGENES ..........................................................................................13 2.4. HERRAMIENTAS Y TCNICAS DE PREPROCESADO............................................................13 2.4.1. Tipos de operaciones..............................................................................................................14 2.4.2. Histograma.............................................................................................................................14 2.4.3. Binarizacin ...........................................................................................................................16
2.4.3.1. Mtodo de Otsu.............................................................................................................................. 17

2.4.4. Filtrado espacial.....................................................................................................................18 2.4.5. Transformaciones geomtricas..............................................................................................20 2.5. SEGMENTACIN.........................................................................................................................21 2.5.1. Proyecciones...........................................................................................................................21 2.6. EXTRACCIN DE CARACTERSTICAS....................................................................................23 2.6.1. Momentos invariantes............................................................................................................23 2.6.2. Huecos y regiones conexas ....................................................................................................24 2.6.3. Generalidades.........................................................................................................................25 2.7. RECONOCIMIENTO Y DECISIN..............................................................................................26 2.7.1. Clculo de distancias .............................................................................................................26 2.7.2. Sistemas 1-NN ........................................................................................................................27 2.7.3. Redes neuronales probabilsticas...........................................................................................29 CAPTULO 3 HERRAMIENTAS UTILIZADAS ................................................................................31 3.1. MATLAB.........................................................................................................................................32 3.2. EL LENGUAJE C++ ...........................................................................................................................34 3.3. VISUAL STUDIO PROFESSIONAL 2005..............................................................................................35 3.4. LA HERRAMIENTA CMAKE ..............................................................................................................36 3.5. LAS BIBLIOTECAS VXL ...................................................................................................................37

NDICE
CAPTULO 4 DESARROLLO ...............................................................................................................39 4.1. CAPTURA DE LA IMAGEN.........................................................................................................40 4.1.2. Proceso ...................................................................................................................................40 4.2. PREPROCESADO .........................................................................................................................43 4.2.1. CONVERSIN DE COLOR A ESCALA DE GRISES ........................................................43 4.2.2. BINARIZACIN ...................................................................................................................45
4.2.2.1. Mtodo de deteccin de picos ....................................................................................................... 45 4.2.2.2. Mtodo iterativo ............................................................................................................................ 48 4.2.2.3. Mtodo adaptativo......................................................................................................................... 49 4.2.2.4. Solucin adoptada ......................................................................................................................... 51 4.2.2.5. Calculo de la calidad del umbral.................................................................................................. 51

4.2.3. RECORTE GRUESO.............................................................................................................52


4.2.3.1. Primer paso: recorte horizontal ................................................................................................... 53 4.2.3.2. Segundo paso: recorte lateral ....................................................................................................... 55

4.2.4. CORRECIN DE LA INCLINACIN .................................................................................57


4.2.4.1. Clculo del ngulo de inclinacin................................................................................................. 57

4.3. SEGMENTACIN DE CARACTERES ........................................................................................59 4.3.1. Proyecciones mejoradas.........................................................................................................59 4.3.2. Procedimiento bsico .............................................................................................................60 4.3.3. Tcnicas complementarias.....................................................................................................61 4.4. RECONOCIMIENTO.....................................................................................................................64 4.4.1. EXTRACCIN DE CARACTERSTICAS ...........................................................................64
4.4.1.1. Escalado ......................................................................................................................................... 64 4.4.1.2. Proyecciones................................................................................................................................... 67 4.4.1.3. Medias proyecciones...................................................................................................................... 68 4.4.1.4. Gradientes de Kirsch..................................................................................................................... 69 4.4.1.4. Inspeccin visual: una tcnica diferente ...................................................................................... 71 4.4.1.5. Tcnicas probadas y descartadas ................................................................................................. 73

4.4.2. CLASIFICACIN .................................................................................................................75 4.5. CRITERIOS EXTERNOS ..............................................................................................................78 4.5.1. Informacin proporcionada...................................................................................................78 4.5.2. Informacin general ..............................................................................................................79 4.6. SELECCIN DE PATRONES .......................................................................................................80 4.7. INTEGRACIN DEL SISTEMA...................................................................................................82 CAPTULO 5 PRUEBAS Y RESULTADOS.........................................................................................85 5.1 PRUEBA DE SECUENCIAS ..........................................................................................................86 5.2. PRUEBAS SIMPLES .....................................................................................................................92 5.3. DETECCIN DEL PUNTO DECIMAL ........................................................................................95 5.4. PROBLEMTICA DE LAS TRANSICIONES..............................................................................97 5.5. CONSIDERACIONES FINALES ..................................................................................................97

II

NDICE
CAPTULO 6 CONCLUSIONES ...........................................................................................................99 CAPTULO 7 LNEAS FUTURAS ......................................................................................................103 APNDICE (A) GUA RPIDA DE OBTENCIN DE IMGENES..............................................109 APNDICE (B) INSTRUCCIONES DE COMPILACIN................................................................113 APNDICE (C) USO DE LA APLICACIN DE CAPTURA...........................................................117 BIBLIOGRAFA ....................................................................................................................................123

III

NDICE

IV

Captulo 1: INTRODUCCIN

Captulo 1 INTRODUCCIN

En este captulo plantearemos las necesidades que se pretenden subsanar con el presente proyecto, tratando de explicar los objetivos que se persiguen. Para ello mantendremos siempre en el punto de mira el entorno para el que se requiere el sistema y en el que se va a implantar. Tambin trataremos de exponer brevemente las etapas que se han seguido para su realizacin, as como los medios utilizados para su desarrollo. Los detalles de las distintas fases sern explicados en captulos posteriores.

Captulo 1: INTRODUCCIN

1.1. OBJETIVOS
1.1.1. MOTIVACIN DEL PROYECTO El Laboratorio Oficial de Metroloxa de Galicia (en adelante LOMG) es un centro tecnolgico situado en el Parque Tecnolxico de Galicia (Ourense). Fue creado en 1997 por la Consellera de Industria de la Xunta de Galicia y depende actualmente de la Fundacin para o Fomento da Calidade industrial e o Desenvolvemento Tecnolxico de Galicia. Tiene en la actualidad 34 personas entre personal de plantilla, contratado y becarios. Las reas de actividad del LOMG son la metrologa industrial, legal y el I+D: La metrologa industrial trata sobre las mediciones en el rea de la produccin industrial y la calidad. Comprende procedimientos de calibracin, intervalos de calibracin, control de procesos de medicin y gestin de instrumentos de medida en la industria para asegurar que estn en estado de conformidad con los requisitos estipulados para su uso previsto. Cabe destacar que sta es el rea donde la experiencia del Laboratorio es ms dilatada y la acreditan clientes como PSACITROEN, DALPHIMETAL, GENERAL DYNAMICS, FINSA, ENCE o PESCANOVA. Para dar el servicio adecuado a estas empresas, el LOMG dispone de cuatro laboratorios tcnicos (temperatura y humedad, elctrico, dimensional y mecnico), que estn acreditados por la Entidad Nacional de Acreditacin (ENAC) en 12 reas. La metrologa legal es la parte de la metrologa que est sujeta a control reglamentario. Se define en el Vocabulario Internacional de Metrologa Legal como la parte de la metrologa relacionada con las actividades que son producto de requisitos estatutarios, y conciernen a las mediciones, a las unidades de medicin, a los instrumentos de medida y a los mtodos de medicin, y que son realizadas por organismos competentes. El LOMG, si bien ya ha realizado algunas actividades en este mbito, como la verificacin de estaciones de ITV, sonmetros, contadores de agua, luz y gas, no ser hasta el ao 2008 cuanto se hagan extensivas a la mayor parte del parque de instrumentacin. Las actividades de I+D, que se encuadran fundamentalmente dentro de la denominada metrologa cientfica, tienen que ver con los problemas comunes a todos los interrogantes metrolgicos, independientes de la cantidad de medida. Comprende los problemas generales tericos y prcticos que conciernen a las unidades de medicin, incluidas su realizacin y divulgacin a travs de mtodos cientficos, los problemas de errores e incertidumbres en la medicin y los problemas de las propiedades metrolgicas de los instrumentos de medida. Aqu el Laboratorio ha apostado recientemente por trabajar en dos grandes lneas como son las Tecnologas de Produccin Industrial y las Micro-Nanotecnologas y los primeros resultados vern la luz prximamente.

El Departamento de Temperatura y Humedad del LOMG se encarga fundamentalmente de la calibracin de todo tipo de termmetros y termohigrmetros, as como de la caracterizacin de medios isotermos. Los clientes ms destacados son empresas del sector alimentario, aeronutico y del automvil.

Captulo 1: INTRODUCCIN El proceso de calibracin de la mayora de estos equipos puede resumirse como sigue a continuacin. Primero se generan las condiciones ambientales en el medio de calibracin de acuerdo a los requisitos previos del cliente. A continuacin, se compara la temperatura del calibrando, equipo que el cliente enva a calibrar, con las del patrn existente en el LOMG para esa magnitud, que tiene a su vez trazabilidad a una referencia nacional, tpicamente Centro Espaol de Metrologa (CEM), INTA (Instituto Nacional de Tcnica Aeroespacial) o Taller de Precisin y Centro Electrotcnico de Artillera (TPYCEA). De la citada comparacin, se obtiene la correccin e incertidumbre del calibrando. El proceso de calibracin mencionado arriba lleva consigo tpicamente una captura de datos del calibrando, la introduccin de la consigna del equipo y la realizacin del informe de calibracin, que se hace de forma manual y provoca una ralentizacin del proceso y, en definitiva, una prdida de eficiencia del Laboratorio. Actualmente, se ha iniciado la automatizacin del proceso mediante la realizacin de un proyecto previo de Ingeniera Informtica que sincroniza los baos, hornos y cmaras climticas, con los patrones (conexin RS-232 o GPIB) y la toma de fotografas de los displays de los calibrandos. Esta tcnica, si bien alivia bastante el trabajo del tcnico y permite el funcionamiento sin su presencia, todava exige un procesado manual posterior para que el tcnico interprete las fotografas y anote los resultados de las mediciones. 1.1.2. OBJETIVOS CONCRETOS El objetivo principal es disear, implementar y comprobar un sistema que realice automticamente la lectura de displays de instrumentos a partir de la imagen de su pantalla e integrar el sistema en el flujo de trabajo en el laboratorio. Con la realizacin de este proyecto se propone la aplicacin de tcnicas de visin por computador para llevar a cabo la tarea de calibracin de forma completamente automtica, sin necesidad de un procesado posterior. Se pretende por tanto, la creacin de un sistema de visin artificial capaz de reducir el trabajo montono y poco especializado del tcnico evitando la labor de anotacin de las diferentes medidas. Las pantallas a interpretar son numricas, en las que se indica temperatura o humedad con diferentes niveles de precisin. La mayor complicacin a la hora de llevar a cabo la interpretacin de estos dispositivos es la existencia de un gran nmero de formatos diferentes de sus pantallas y fuentes numricas. En primer lugar trataremos con displays de 7 segmentos que, a priori, pueden parecer los ms sencillos, pero en cuanto vamos viendo ejemplos de sus formatos nos encontramos con caracteres rectos y en cursiva, con diferentes grosores e inclinaciones, separacin entre caracteres e incluso diferentes convenios a la hora de representar una misma cifra con un display de 7 segmentos como podemos apreciar en la figura 1.1.

Captulo 1: INTRODUCCIN

Podemos apreciar la diferente forma de representar en este caso la cifra 7, as como un formato inclinado.

Figura 1.1

Tambin hay aparatos con pantallas grficas que presentan formatos numricos ms complejos como los mostrados en la figura 1.2.

Figura 1.2

Finalmente, no podemos perder de vista que los dispositivos a calibrar son instrumentos de medida que estn siendo utilizados en entornos industriales, muchas veces hostiles. Por este motivo, tambin es frecuente la aparicin de pantallas deterioradas por manchas, plsticos protectores, ralladuras y dems elementos que dificultan la lectura de los instrumentos. Un ejemplo de ello se muestra en a figura 1.3.

Las burbujas de aire del plstico protector producen manchas en la pantalla.

La pantalla est sucia y rayada.

El plstico protector produce rayas y sombras

El plstico protector est parcialmente despegado en la parte inferior.

Figura 1.3

Captulo 1: INTRODUCCIN Una gran complicacin aadida a este sistema es, por tanto, el no saber el tipo de formato que va a presentar la pantalla que va a tener que interpretar. El resultado final ser una aplicacin que reciba una imagen y que devuelva el valor interpretado a la aplicacin de la que ya disponemos.

1.2. PLAN DE TRABAJO


1.2.1. FASE PREVIA Partimos del estudio de trabajos anteriores de reconocimiento de caracteres as como de las diferentes tcnicas empleadas y que puedan ser de utilidad en el presente proyecto. Dada la amplitud y diversidad del campo de la visin por computador y el reconocimiento de caracteres, hemos seleccionado los mtodos, de entre los existentes, que mejor se ajustan al problema planteado y hemos propuesto otros propios en los casos necesarios. Respecto a esto cabe destacar que no estamos ante un proyecto meramente terico, sino que tenemos que proporcionar un sistema plenamente funcional y que se integre en el entorno de las necesidades de una empresa. Por esta razn, tras probar en muchos casos tcnicas generales en el campo de la visin artificial, se han tenido que adoptar soluciones concretas diseadas a la medida de los problemas que presenta este proyecto, de forma que se pueda garantizar una utilidad real y una integracin exitosa en la dinmica de trabajo del LOMG. Tambin era tarea de esta fase inicial el anlisis del proyecto del que el presente es continuacin para poder integrarlos, as como el estudio del entorno de trabajo utilizado. Prescindiremos de la parte de sincronizacin y comunicacin con las distintas cmaras climticas1 del proyecto de partida para centrarnos en la parte que realmente nos interesa, que es la obtencin de las imgenes. En este aspecto, el programa desarrollado proporciona al tcnico una ventana en la que le permite ajustar y comprobar parmetros de la cmara (enfoque, iluminacin, etc.) hasta que la imagen sea de la calidad deseada. Posteriormente, se le pide que seleccione con un recuadro la zona de inters, que ser la imagen que nuestro sistema analizar. En el apndice (C) se comentarn los detalles de este proceso.

Una cmara climtica es un dispositivo compuesto por un recinto en el que se generan condiciones de temperatura y humedad relativa por medio del calentamiento/enfriamiento del aire y la adicin/eliminacin de vapor de agua.

Captulo 1: INTRODUCCIN

Figura 1.4

Tras el estudio terico previo, ha sido necesario analizar la realidad del trabajo en el laboratorio. Al ser este un proyecto realizado bajo demanda de un centro tecnolgico como es el LOMG, ser necesario un proceso de entrevistas y observacin para detectar detalles y necesidades del entorno en el que finalmente estar funcionando el sistema. Aspectos de relevancia son la distribucin fsica de la cmara fotogrfica y elementos de iluminacin, de forma que se puedan eliminar posibles sombras y carencias en la obtencin de las imgenes interfiriendo lo menos posible en el trabajo del personal del laboratorio. 1.2.2. PROTOTIPOS EN MATLAB Posteriormente, se ha trabajado con la herramienta Matlab en la realizacin y prueba de prototipos. Para ello se han tomado una serie de muestras de las imgenes de los distintos dispositivos a interpretar. La eleccin de Matlab se debe a las ventajas y facilidades que proporciona en el procesado de imagen. De esta forma y como se ha dicho anteriormente, se ha podido evaluar la idoneidad de los distintos mtodos y procesados efectuados, seleccionar los que mejor se ajustaban y modificarlos hasta obtener los resultados deseados. En el apartado dedicado a la descripcin de las herramientas utilizadas (Captulo 3) hablaremos ms en detalle de Matlab.

Captulo 1: INTRODUCCIN 1.2.3. IMPLEMENTACIN Y PRUEBAS Una vez comprobado el correcto funcionamiento de las soluciones adoptadas en Matlab, se ha dado paso a su implementacin definitiva. Dado que en el LOMG se trabaja con hojas Excel para los informes de calibracin, el proyecto previo ha sido realizado en lenguaje Visual C++, dentro del entorno de desarrollo Microsoft Visual Studio Professional 2005 para lograr la necesaria integracin. Tanto el lenguaje C++ (por su potencial para el procesado de imagen) como el entorno de trabajo (para asegurar la compatibilidad) han sido empleados tambin en el presente proyecto. En un principio, se plante como posibilidad la utilizacin de bibliotecas externas. La decisin de su uso o no ira en funcin de la adecuacin de las funciones proporcionadas a las necesidades y del grado de dependencia de estas, pudiendo ser preferible el uso de funciones propias de no suponer un esfuerzo excesivo su implementacin. Finalmente, considerando los puntos a favor y en contra, se ha decidido utilizar la biblioteca VXL (ver captulo 3). Aunque supone un mayor tiempo de estudio y de adaptacin inicial, presenta numerosos beneficios, ya no solo a la hora de la implementacin, sino para futuras ampliaciones y modificaciones. Para la realizacin de las pruebas se ha realizado un archivo de imgenes de los dispositivos que han ido entrando en el laboratorio durante el periodo de realizacin del proyecto. Con estas imgenes se ha elaborado una batera de pruebas que se explicar en detalle en el captulo 5. Esto permitir evaluar la tasa de aciertos y la fiabilidad del sistema.

1.2.4. IMPLANTACIN Finalmente, se ha procedido a la implantacin del sistema en el entorno de trabajo del laboratorio. Para ello, es necesario dar las instrucciones precisas al personal que vaya a utilizar la herramienta. Dentro de esto, se incluye cmo utilizar el software, cmo ajustar los parmetros de la cmara y su disposicin espacial, cmo obtener unas imgenes ptimas que permitan una correcta interpretacin, etc. Es importante que la informacin proporcionada sea la adecuada, sin entrar en detalles superfluos que no sean necesarios para el correcto aprovechamiento de la utilidad de la herramienta. Una vez puesto en marcha el sistema, es necesario evaluar el grado de ajuste a la dinmica de trabajo real del centro. Puede ser necesario, tras un periodo inicial de prueba del sistema por los usuarios finales (tcnicos de laboratorio del LOMG), realizar algn tipo de ajuste o pequea modificacin que no haya sido detectada en las entrevistas iniciales y que les facilite el trabajo con el sistema. En este aspecto habr dos tipos de modificaciones. Por un lado, las que no hayan sido detectadas en el periodo de prueba y sea necesario corregir para proporcionar un correcto funcionamiento del sistema. Y, por otra parte, las apreciaciones de uso y funcionalidades, que podrn ser propuestas como futuras modificaciones y ampliaciones del presente proyecto.

Captulo 1: INTRODUCCIN

1.3. MEDIOS MATERIALES


Para la realizacin del proyecto se ha utilizado una serie de medios, tanto hardware como software que son listados a continuacin. En sucesivos captulos (Herramientas utilizadas y Desarrollo) sern analizados en detalle. Matlab 7R14 con toolboxes de imagen y procesado de seal. Microsoft Visual Studio Professional 2005. Librerias VXL. Herramienta CMake. Procesador de textos para la documentacin (Office 2003). PC con todo el software anterior instalado. Cmara digital C-Cam BCi4 con lentes de 25 y 75 mm. Dispositivos de medida (termmetros, etc.). Impresora.

Captulo 2: RESUMEN TERICO

Captulo 2 RESUMEN TERICO

En este capitulo se introducirn los conceptos tericos necesarios para la correcta compresin del desarrollo del proyecto. Se tratarn los procedimientos y tcnicas ms comunes en el campo del procesado de imagen y la visin por computador que presenten relacin con el trabajo realizado en el proyecto. La forma de adaptar esos mtodos o disear otros nuevos a partir de ellos se dejar para el captulo dedicado al desarrollo. El objetivo no es dar una explicacin exhaustiva de los conceptos introducidos, sino servir como guin al lector del proyecto y facilitar su comprensin. Para una explicacin en profundidad de cualquiera de los temas tratados re recomienda recurrir a la bibliografa listada en la parte final de esta documentacin.

Captulo 2: RESUMEN TERICO

2.1. VISIN POR COMPUTADOR


La visin por computador o visin artificial puede definirse como el proceso de extraccin de informacin del mundo fsico a partir de imgenes, utilizando para ello un computador. Es la capacidad de la mquina para ver el mundo que la rodea. Desde el punto de vista de la ingeniera, nos referimos a un sistema autnomo que realiza algunas de las tareas que el sistema de visin humano realiza. La informacin o tareas que este sistema de visin pueda llegar a extraer o localizar van desde la simple deteccin de objetos sencillos en la imagen hasta la interpretacin tridimensional de complicadas escenas. La visin por computador es una disciplina en creciente auge y continuo inters por la cantidad de aplicaciones con un inminente potencial de implantacin tales como: robtica, medicin, reconocimiento de objetos, procesos de inspeccin automtica, navegacin de vehculos, anlisis de imgenes medicas, etc. El campo de la visin artificial est ntimamente ligado al procesado de imgenes digitales, que proporciona las herramientas necesarias para el desarrollo del primero. Por esta razn son dos disciplinas que frecuentemente se entrelazan y complementan en la bibliografa. Las nuevas necesidades de las aplicaciones de visin artificial potencian el desarrollo de nuevas tcnicas en procesado de imagen y viceversa, nuevos mtodos de procesado de imagen facilitan la aparicin de nuevas aplicaciones de visin por computador. Ambas disciplinas giran, por tanto, en torno a un elemento comn: la imagen digital, que ser protagonista de los siguientes apartados desarrollados. El proceso tpico de un sistema de visin artificial se muestra en la figura 2.1. Las partes de este proceso sern utilizadas en el presente captulo para explicar sus fundamentos tericos.

Figura 2.1

10

Captulo 2: RESUMEN TERICO

2.2. TIPOS DE IMGENES Y CARACTERSTICAS


En el mbito digital, al igual que en la fotografa impresa tradicional, nos encontramos con diferentes tipos de imgenes. La primera y ms sencilla clasificacin que podemos adoptar consiste en distinguir entre imgenes en color e imgenes en escala de grises. Independientemente de si nos encontramos ante imgenes de un tipo u otro, hay dos caractersticas comunes que determinarn su calidad: Resolucin espacial: Viene determinada por el nmero de puntos (pxeles) por unidad de superficie. Cuanto mayor sea esta relacin, ms nivel de detalle presentar la imagen y, por consiguiente, mayor ser su calidad. Resolucin en amplitud o profundidad de bits: Hace referencia al nmero de bits empleados para representar cada uno de los puntos de la imagen. Cuanto mayor sea, ms niveles distintos se podrn tener y, por tanto, mayor resolucin en amplitud.

En las imgenes en color, el sistema ms utilizado y el que adoptaremos en el presente proyecto es el RGB (Red-Green-Blue). En este, cada punto de la imagen (pxel) viene determinado por tres valores que indican el porcentaje de rojo, verde y azul. En la seccin dedicada al desarrollo del proyecto explicaremos la decisin de pesos adoptada para la conversin entre imgenes en color RGB e imgenes en escala de grises. Las imgenes en escala de grises utilizan un nico valor para la representacin de cada punto, que se corresponde con la intensidad. Dependiendo del nmero de bits que empleemos para almacenar el valor de intensidad de cada pxel, tendremos diferentes niveles de escala de grises, lo que se conoce como profundidad de la imagen. La ms frecuentemente utilizada es la que asigna un byte a cada pxel, con lo que tenemos 256 niveles de gris, en los que el nivel ms bajo (0) se corresponde con el negro y el nivel ms alto (255) con el blanco. Si reducimos en nmero de niveles de gris a dos, tenemos una imagen binaria, en la que el 1 o nivel alto representa el blanco y el 0 o nivel bajo representa el negro. En la figura 2.2 se muestra un ejemplo de los distintos tipos de imagen. Cabe destacar la escasa diferencia que podemos apreciar a simple vista entre la imagen con 256 niveles de gris y la imagen con 64 niveles de gris. Esto se debe a que el ojo humano1 no es capaz de diferenciar entre ms de 50 o 60 niveles de gris. Sin embargo, es mucho ms sensible a los cambios de color (cambios de tinte), como puede ser el paso de un tono de rojo a uno de verde.

Cuando hablamos del ojo humano nos referimos al ojo medio. Todos tenemos el tpico amigo experto observador capaz de distinguir los 256 niveles y de ver en el dominio de la frecuencia si es necesario.

11

Captulo 2: RESUMEN TERICO

Imagen original en color

Imagen con 256 niveles de gris

Imagen con 64 niveles de gris

Imagen con 16 niveles de gris

Imagen con 4 niveles de gris

Imagen con 2 niveles de gris

Figura 2.2

12

Captulo 2: RESUMEN TERICO

2.3. REPRESENTACIN DE IMGENES


La forma mas sencilla de trabajar con imgenes digitales es verlas como una funcin de dos dimensiones f(x,y), donde x e y indican las coordenadas espaciales, y el valor de la funcin en el punto (x,y) es proporcional al brillo (nivel de gris o intensidad) de la imagen en ese punto. En el caso de imgenes en color RGB, a los planos x e y aadimos un tercer plano z que puede tomar 3 valores: el del rojo, el del azul o el del verde. Por convenio, a lo largo de todo este proyecto trabajaremos con los ejes mostrados en la figura 2.3.

Figura 2.3

2.4. HERRAMIENTAS Y TCNICAS DE PREPROCESADO


Entendemos el procesado de una imagen como una transformacin de una imagen de entrada en otra imagen de salida. Desde el punto de vista de un sistema de visin artificial, el objetivo de este procesado es facilitar el anlisis posterior y hacerlo ms fiable. El prefijo pre viene precisamente de que ese procesado se realiza en la imagen antes de pasar a analizarla para extraer informacin. Dentro de este mbito caben transformaciones en la intensidad de los pxeles para mejorar el contraste, operaciones de filtrado para eliminar ruido o incluso transformaciones geomtricas

13

Captulo 2: RESUMEN TERICO sobre la totalidad de la imagen. A continuacin, explicaremos las herramientas y tcnicas ms habituales.

2.4.1. Tipos de operaciones A la hora de realizar operaciones sobre una imagen podemos actuar de dos formas: 1. Operaciones individuales: La transformacin realizada en cada pxel es funcin nicamente de su propio valor. Un ejemplo de operacin individual es la binarizacin. 2. Operaciones de vecindad: El valor de cada pxel tras la transformacin depender de los valores de los pxeles de su vecindad. El tamao de esta puede variar, siendo frecuente el uso de vecindades de 3x3 o 5x5 puntos. Un ejemplo de operacin de vecindad es el filtrado.

Figura 2.4

2.4.2. Histograma El histograma de una imagen es una herramienta visual de gran utilidad para el estudio de imgenes digitales. Con una simple observacin podemos obtener informacin del contraste o distribucin de intensidades. El histograma de una imagen digital con L niveles de gris en el rango [0, L-1] es una funcin discreta de la forma: h(rk ) = nk rk es el k-simo nivel de gris. nk es el nmero de pxeles en la imagen con el nivel de gris rk. k = 0, 1, 2, ..., L-1 niveles de gris. 14

Captulo 2: RESUMEN TERICO Normalmente el histograma se normaliza, de forma que sus valores estn comprendidos entre 0 y 1. De esta forma quedara:

h(rk ) =

nk N

N puede tomar diferentes valores. Lo ms frecuente es asignarle el nmero total de pxeles de la imagen. De esta forma, podemos interpretar los h(rk ) como probabilidades. Sin embargo, esto da como resultado valores del histograma prximos al 0 y no aprovechar todo el rango [0,1]. Un mtodo que soluciona este problema y que ha sido adoptado en el presente proyecto es asignar a N el valor del mximo nmero de pxeles que tienen el mismo nivel de intensidad. N = max(nk) En la figura 2.5 podemos ver un ejemplo de histograma.

Figura 2.5

Es fcil ver las numerosas posibilidades que ofrece el realizar operaciones sobre el histograma para el mbito del preprocesado. Estas suelen ser operaciones individuales a nivel de cada punto de la imagen que inciden directamente sobre su intensidad. La ms destacada quiz sea la ecualizacin de histograma, mediante la cual conseguimos aumentar el contraste de la imagen. Para una informacin detallada de cada una de estas operaciones se recomienda consultar la bibliografa. En la presente

15

Captulo 2: RESUMEN TERICO documentacin nos limitaremos a explicar las operaciones realizadas a lo largo del desarrollo del proyecto.

2.4.3. Binarizacin En muchos sistemas de visin por computador (entre ellos el que nos ocupa) resulta imprescindible binarizar la imagen con la que se est trabajando para poder extraer informacin. Este proceso consiste en pasar la imagen en escala de grises con n niveles a una imagen de las mismas dimensiones, pero con solo dos niveles, blanco y negro. Un paso decisivo en este proceso es el clculo del umbral de decisin. Este umbral actuar como un filtro escaln, de forma que los puntos con intensidad superior sern blancos y los de intensidad inferior resultarn negros. Es una operacin individual que realiza para cada pxel la siguiente transformacin: blanco, f ( x, y ) > umbral g ( x, y ) = , siendo f(x,y) el valor que toma el pxel en negro, f ( x, y ) umbral la imagen de entrada. El objetivo es conseguir que los pxeles de color blanco se correspondan con los objetos de inters y los de color negro con el entorno. Para lograr esto en el caso en que las regiones de inters sean ms oscuras que el entorno, frecuentemente se realiza una operacin de inversin tras la binarizacin.

Imagen en color

Imagen en escala de grises

Figura 2.6 a

16

Captulo 2: RESUMEN TERICO

Imagen binarizada

Imagen invertida

Figura 2.6 b

El paso ms importante de este proceso es el clculo del umbral, paro lo que existen diferentes mtodos que no son, ni mucho menos, triviales. La mayora de las tcnicas se basan en estadsticos aplicados sobre el histograma. Uno de los ms ampliamente utilizados y comentados en la bibliografa es el mtodo de Otsu [Otsu]. La explicacin detallada de los empleados en este trabajo puede verse en el captulo 4, dedicado al desarrollo del proyecto.

2.4.3.1. Mtodo de Otsu La mayora de los mtodos para hallar el umbral no dan buenos resultados cuando se trabaja con imgenes del mundo real debido a la presencia de ruido, histogramas planos o una iluminacin inadecuada. Por el contrario, el mtodo de Otsu es considerado uno de los mejores mtodos de seleccin de umbral para imgenes del mundo real. El mtodo de Otsu elige el umbral ptimo maximizando la varianza entre clases mediante una bsqueda exhaustiva en el histograma de la imagen en escala de grises. Para ello necesitamos calcular los siguientes parmetros. Media global de los niveles de gris, = lp(l ) Varianza global de los niveles de gris, 2 = (l ) 2 p(l )

Luego tomamos un umbral U, para dividir la imagen en los pxeles que estn por encima y por debajo. Para cada uno de las distribuciones parciales calculamos la media y la varianza.

17

Captulo 2: RESUMEN TERICO

1 =
0

U 1

lp (l ) ; w1

2 =

lp (l ) U +1 w2

255

(l 1 ) 2 p (l ) = ; w1 0
U 1 2 1

(l 2 ) 2 p (l ) = w2 U +1
255 2 2

donde:
U 1 0

w1 = p (l ) ;

w2 = p (l )
U +1

255

As, se define la varianza conjunta como:


2 2 = w1 12 + w2 2 ;

La medida de la calidad del umbral resulta ser


C = 2 2 ,

En donde C valdra 2 para el caso ideal en que hubiera solamente dos niveles de gris. La forma de calcular el umbral U consiste en calcular de forma iterativa la calidad de todos los posibles umbrales y tomar el U que produzca una mayor C. En el captulo dedicado al desarrollo se explicar un mtodo iterativo basado en el mtodo de Otsu, pero simplificado y adecuado al caso que nos ocupa.

2.4.4. Filtrado espacial El filtrado espacial de imgenes digitales resulta ser una operacin de convolucin entre las funciones bidimensionales imagen, f, y un ncleo que llamaremos h. No es el objetivo de esta documentacin explicar las operaciones de convolucin, para lo que nos remitimos de nuevo a la bibliografa recomendada [Gonzalez & Woods][J. Gonzlez]. Nos centraremos en los aspectos esenciales para la comprensin del proceso de filtrado. El filtrado espacial es una operacin que transforma el valor de un pxel p en la posicin (x,y) teniendo en cuenta los valores de los pxeles vecinos. Para ello se realiza una suma ponderada de los valores de los puntos de la vecindad del punto p. Los valores 18

Captulo 2: RESUMEN TERICO de esa ponderacin vendrn definidos por una mscara (h), que se comporta realmente como un filtro. El tamao de la mscara puede variar dependiendo del nmero de pxeles que queramos tener en cuenta para el filtrado, siendo valores tpicos 3x3 o 5x5. De esta forma tenemos que:

f o ( x, y ) = h(m, n) f ( x m, y n)
m n

Por ejemplo, para realizar el promediado de los pxeles de la vecindad utilizaramos una mscara de la forma:

1 9 1 h= 9 1 9

1 9 1 9 1 9

1 9 1 9 1 9

Dando como resultado f 0 ( x, y ) = 1 9 1 9 1 1 1 f ( x 1, y 1) + f ( x, y 1) + f ( x + 1, y 1) + 9 9 9 1 1 f ( x 1, y ) + f ( x, y ) + f ( x + 1, y ) + 9 9 1 1 f ( x 1, y + 1) + f ( x, y + 1) + f ( x + 1, y + 1) 9 9

A la hora de aplicar la mscara a toda la imagen hay que tener en cuenta lo que sucede en los bordes. Estos no disponen de toda la vecindad, por lo que no se les puede aplicar la misma operacin. Distintas soluciones pueden ser permitir una imagen de salida de menores dimensiones que la imagen de entrada o, si queremos mantener el tamao, duplicar los pxeles de los bordes de la imagen de entrada en la imagen de salida.

19

Captulo 2: RESUMEN TERICO

La mscara se desplaza a lo largo de toda la imagen para realizar el filtrado en cada punto.

Figura 2.7

2.4.5. Transformaciones geomtricas Las operaciones geomtricas son transformaciones que modifican las coordenadas espaciales de la imagen. El resultado es similar a lo que ocurrira si la imagen se observase desde otro punto de vista. En el presente proyecto se hace uso de transformaciones geomtricas como son la interpolacin, el diezmado o el giro. Este tipo de operaciones no presentan en general una elevada dificultad en su comprensin, dado que resultan bastante visuales e intuitivas. Por esta razn limitaremos la explicacin de la mayor parte de ellas a las situaciones concretas que se presenten en el captulo dedicado al desarrollo.

20

Captulo 2: RESUMEN TERICO

2.5. SEGMENTACIN
La segmentacin es el proceso mediante el cual se separan las zonas de la imagen que presentan inters y de las cuales posteriormente se podrn extraer caractersticas. En cierta medida, el proceso de binarizacin explicado en el apartado anterior es tambin un procedimiento de segmentacin, en el sentido de que consigue separar las zonas de inters (en blanco) de su entrono (en negro). Sin embargo, en el sistema presentado en este proyecto, su funcin est mejor integrada como parte del preprocesado realizado para adecuar la imagen al verdadero proceso de segmentacin que centraremos en el recorte de las cifras a interpretar. Por esta razn, en esta seccin nos limitaremos a explicar las tcnicas ms frecuentes empleadas en la segmentacin de caracteres.

2.5.1. Proyecciones En el caso que nos ocupa y en la mayora de situaciones en las que se necesita reconocer caracteres, un mtodo ampliamente utilizado es el de las proyecciones. Este consiste en calcular los vectores suma de columnas (proyeccin horizontal) y suma de las filas (proyeccin vertical) de la matriz imagen. As, como podemos apreciar en la figura 2.8, resulta sencillo separar los caracteres a partir de los mnimos y mximos presentados.

Imagen con caracteres para segmentar.

Proyeccin vertical: Resulta fcil diferenciar las dos lneas de texto, con lo que podremos separarlas sin mayor problema.

Figura 2.8 21

Captulo 2: RESUMEN TERICO

Trozo de detalle de una de las lneas.

Proyeccin horizontal: Ahora las divisiones entre caracteres no son tan claras como lo eren entre lneas, pero se puede apreciar la sucesin de mnimos y mximos marcada por los caracteres y su espacio intermedio.

Figura 2.8b

La tcnica de las proyecciones se utilizar como base sobre la que hacer modificaciones y mejoras para llevara a cabo la segmentacin de los caracteres a interpretar por el sistema descrito en esta documentacin. Su descripcin se muestra en el captulo dedicado al desarrollo.

22

Captulo 2: RESUMEN TERICO

2.6. EXTRACCIN DE CARACTERSTICAS


Para poder reconocer un objeto u obtener la informacin buscada en la imagen es necesario extraer unas caractersticas que permitan describirlo matemticamente. Para ello, lo ms habitual es formar un vector de caractersticas con aquellas propiedades que resulten ms relevantes para nuestro objetivo. Es importante que estos descriptores sean precisos, presenten un elevado poder de discriminacin y, dependiendo de la aplicacin, puede ser deseable o no que permanezcan invariantes ante escalado, puntos de vista, etc. A continuacin describiremos de forma breve algunos de los mtodos utilizados en la extraccin de caractersticas para reconocimiento de caracteres.

2.6.1. Momentos invariantes Son descriptores de regiones que se mantienen invariantes a operaciones geomtricas de de traslacin, rotacin o cambio de escala. Por esta razn son un tipo de caractersticas ampliamente utilizado en el reconocimiento de caracteres [G. Pajares]. Sus fundamentos son los siguientes: El momento bidimensional de orden (p + q) de una imagen digital f(x, y) de dimensiones M x N se define como:

m pq =

M 1 N 1 x =0 y =0

y q f ( x, y )

El momento central de orden (p + q) se define como:

pq = ( x x ) p ( y y ) q f ( x, y )
x =0 y =0

M 1 N 1

siendo

x=

m10 ; m00

y=

m01 m00

Los momentos centrales normalizados se definen como:

pq =
siendo

pq 00

p+q + 1 , con p+q = 2, 3, 2

23

Captulo 2: RESUMEN TERICO Finalmente, de los momentos segundo y tercero podemos obtener los siete momentos invariantes (ante cambios de escala, traslacin, rotacin o simetra) siguientes:

1 = 20 + 02
2 = ( 20 02 ) 2 + 4(11 ) 2

3 = ( 30 312 ) 2 + (3 21 03 ) 2 4 = ( 30 + 12 ) 2 + ( 21 + 03 ) 2

5 = ( 30 312 )( 30 + 12 )[( 30 + 12 ) 2 3( 21 + 03 ) 2 ]
+ (3 21 03 )( 21 + 03 ) 3( 30 + 12 ) 2 ( 21 + 03 ) 2

6 = ( 20 02 )[( 03 + 12 ) 2 ( 21 + 03 ) 2 ] + 411 ( 30 + 12 )( 21 + 03 )
7 = (3 21 03 )( 30 + 12 )( 30 + 12 )2 3( 21 + 03 )2
+ (312 30 )( 21 + 03 ) 3( 30 + 12 ) ( 21 + 03 )
2

De la invarianza viene su potencia para el reconocimiento. Sin embargo, en el presente proyecto sta result ser un problema como veremos ms adelante (captulo 4).

2.6.2. Huecos y regiones conexas Resulta bastante intuitivo que el nmero de huecos puede utilizarse como una caracterstica que nos permita diferenciar entre grupos de caracteres (normalmente con 2, 1 o 0 huecos). Adems esta es una caracterstica que no depende del tamao o de la inclinacin. Otra propiedad relacionada es el nmero de regiones conexas. Entendemos por regin conexas a un conjunto de pxeles blancos (no podemos olvidar que en esta fase estamos trabajando con imgenes binarias) de forma que el camino entre dos puntos cualquiera no necesita pasar por ningn pxel negro. Debemos diferenciar entre conectividad a 4 y conectividad a 8. En la figura 2.9 se ilustran estos conceptos

24

Captulo 2: RESUMEN TERICO

Vecindad a 4 del punto (i, j)

Vecindad a 8 del punto (i, j)

Empleando conectividad a 8 las casillas a 1 formaran una sola regin conexa. Empleando conectividad a 4 las casillas a 1 formaran dos regiones conexas independientes.

Figura 2.9

Una forma de relacionar estas dos caractersticas es el nmero de Euler, que se define como la diferencia entre el nmero de regiones conexas y el nmero de huecos.

6
Nmero de Euler = 0

8
Nmero de Euler = -1

Figura 2.10

2.6.3. Generalidades Muchos mtodos de extraccin de caractersticas son fuertemente dependientes de las dimensiones de la imagen. Entre ellos estn algunos de los utilizados en la implementacin de este proyecto como son las proyecciones o las componentes direccionales de Kirsh, cuya explicacin dejaremos para el captulo de desarrollo.

25

Captulo 2: RESUMEN TERICO Los vectores de caractersticas obtenidos mediante estos procedimientos tienen una longitud proporcional a las dimensiones de la imagen de entrada. Tenemos por tanto, por un lado la necesidad de trabajar con vectores de caractersticas de longitud constante y por otro, la necesidad de permitir mltiples tamaos en las imgenes a interpretar. Para poder mantener constante la dimensin de los vectores ser necesario realizar operaciones de cambio de escala sobre las imgenes segmentadas, generalmente un diezmado. Mediante el diezmado adaptamos los recortes de los caracteres sobre los que vamos a extraer caractersticas a un tamao menor con el que trabajar para obtener vectores de tamao constante (aunque suficiente). El procedimiento de diezmado empleado se explicar con detalle en el captulo de desarrollo.

2.7. RECONOCIMIENTO Y DECISIN


Una vez que tenemos los caracteres de entrada caracterizados por unos vectores de caractersticas, tendremos que decidir con que objeto se corresponden. Para ello, normalmente dispondremos de una serie de patrones con los que, de una forma u otra, tendremos que comparar. Para llevar a cabo esta comparacin y clasificacin ser necesario normalmente el clculo de distancias, por lo que empezaremos explicando los conceptos necesarios a este efecto.

2.7.1. Clculo de distancias Supongamos tres puntos a, b y c. Para que d sea una funcin distancia deber cumplir:
d ( a, b) 0 , ( d ( a, b) = 0 a =b ); d ( a , b ) = d (b , a ) ; d ( a , c ) d ( a , b ) + d (b , c )

En base a estas tres propiedades y siendo n el nmero de componentes de los vectores a y b, podemos definir distintos tipos de distancia entre las que tenemos: Distancia Eucldea (norma 2):

d e (a, b) = (a1 b1 ) 2 + (a 2 b2 ) 2 + ... + (a n bn ) 2


o lo que es lo mismo (empleando notacin de vectores),

d e ( a, b) =

(a b)T (a b )
26

Captulo 2: RESUMEN TERICO

Distancia rectangular o Manhatan (norma 1):

d (a, b ) = ai bi
i =1

Distancia de Tchebichev:

d T (a, b) = max( a1 b1 , a 2 b2 ,..., a n bn )

Distancia de Mahalanobis:

d e ( a, b) =
siendo C 1 la matriz de covarianzas.

(a b)T C 1 (a b)

2.7.2. Sistemas 1-NN El 1-NN es un clasificador de mnima distancia. La idea de este tipo de clasificadores es calcular las distancias del vector de caractersticas de entrada a los distintos vectores de caractersticas de los patrones disponibles y seleccionar aquel que est ms prximo como valor de salida. Existen dos posibilidades a la hora de seleccionar los patrones con que comparar: Podemos tener varios patrones para una misma clase y calcular el vector de caractersticas de la clase como la media de los vectores (o centroide) de cada patrn individual. Este sistema solo funciona bien cuando los patrones de una misma clase forman nubes poco dispersas entre si y bien separadas con las nubes de las otras clases.

27

Captulo 2: RESUMEN TERICO

Figura 2.11

Si no se da la condicin del prrafo anterior tendremos que considerar cada patrn como una clase individual y diferenciada. En este caso estaremos ante un clasificador 1-NN. Un ejemplo de esta situacin es el que se da en el presente proyecto. El espectro de tipos de fuente de entrada es muy amplio, recorriendo desde caracteres de siete segmentos hasta complejas fuentes propias de un editor de texto. En este caso es frecuente que una cifra presente ms similitudes (menor distancia) con otra cifra que con la misma en otros formatos.

Figura 2.12

28

Captulo 2: RESUMEN TERICO Para el clculo de la distancia podemos emplear cualquiera de las explicadas en el apartado anterior. Lo ms lgico es utilizar la distancia Eucldea, sin embargo, al ser las componentes de todos los vectores siempre positivas el resultado de la decisin va a ser el mismo utilizando la distancia rectangular, que es computacionalmente ms sencilla.

2.7.3. Redes neuronales probabilsticas El PNN (Probabilistic Neural Network) es un mtodo de clasificacin basado en la teora de la decisin de Bayes. Se enfocar, por tanto, el problema de la decisin desde un punto de vista probabilstico. Pese a recibir el nombre de red neuronal, el PNN es un clasificador que no precisa de entrenamiento previo a su funcionamiento. Por el contrario, necesita recorrer todo el conjunto de entrenamiento para hacer clculos cada vez que se ejecuta y requiere una elevada cantidad de memoria para almacenarlo, por lo que el resultado es un clasificador lento. Sin embargo, debe ser tenido en cuenta dado que sus resultados suelen ser muy buenos en el reconocimiento de caracteres [Gonzalez & Woods]. Supongamos que tenemos un vector de caractersticas x y un conjunto de clases ci en las que clasificar. El mtodo se basa en el clculo de las probabilidades a posteriori p(ci / x) , es decir, para una observacin dada x la probabilidad de que pertenezca a la clase ci . Segn la regla de Bayes
p (c i / x ) = p (c i , x ) p ( x)

o lo que es lo mismo
p (c i / x) = p ( x / c i ) p (c i ) p ( x)

Podemos apreciar que minimizar el riesgo de error a la hora de asignar el vector de caractersticas de entrada x a la clase ci es lo mismo que maximizar p(ci / x) , por lo que la regla de decisin a tomar sera la siguiente:

x c i p (c i / x ) > p (c j / x )

i j

Teniendo en cuenta que p (x) es constante respecto a ci (no resulta discriminante) y utilizando el trmino de la derecha en la regla de Bayes, obtenemos
x c i p ( x / c i ) p (c i ) > p ( x / c j ) p ( c j )

i j

29

Captulo 2: RESUMEN TERICO Podemos utilizar sin ms como funcin de decisin (a maximizar) Di (x) = p(x / ci ) p(ci )

Generalmente las distribuciones de densidad de probabilidad se eligen Gaussianas, con lo que queda la frmula

1 Di (x) = (2 ) n / 2 C i

1/ 2

1 ( x m i )T Ci1 ( x mi ) 2

p (c ) i

donde n es la dimensin de los vectores de caractersticas, m i es el vector de caractersticas con la media de los patrones de la clase ci , C i es la matriz de covarianzas y C i es su determinante.

mi =
Ci =

1 Mi

xci T

x
m i mT i

1 Mi

xci

xx

La interpretacin de esta frmula consiste en situar un ncleo gaussiano con simetra elptica centrado en cada una de las muestras de entrenamiento.

El clculo de esta funcin de decisin para cada uno de los patrones de entrada resulta tedioso por lo que en la bibliografa se recomiendan algunas aproximaciones como la sugerida en [F. Martn]: Di (x) = p (ci ) M i (1 / 2 2 ) d 2 ( x ,x (ji ) ) e M i j =1

donde d 2 (.) es la conocida distancia eucldea. En esta frmula se asume la existencia de M i muestras de entrenamiento para la clase ci , esas muestras se escriben: x (ji ) ( j vara de 1 a M i ). La probabilidad de pertenencia de un carcter a la clase ci a priori se puede suponer constante en la mayora de casos por lo que se puede eliminar de la frmula al no influir en la maximizacin. Para se recomienda un valor entre 0.25 y 5.00 a determinar experimentalmente, siendo 0.25 el que proporciona mejores resultados. Con este valor los ncleos estn muy concentrados alrededor de su mximo aproximndose la PNN al clasificador 1-NN visto anteriormente.

30

Captulo 3: HERRAMIENTAS UTILIZADAS

Captulo 3 HERRAMIENTAS UTILIZADAS

En este captulo trataremos las herramientas utilizadas para el desarrollo del proyecto tales como herramientas para desarrollo de prototipos (MatLAB), entornos de programacin, herramientas utilizadas para compilar y enlazar bibliotecas, bibliotecas externas utilizadas, etc. El objetivo ser dar una visin global, sin entrar en los detalles de las funcionalidades utilizadas en cada caso, para las que se puede consultar la bibliografa o, en muchos casos, la propia ayuda de los programas.

31

Captulo 3: HERRAMIENTAS UTILIZADAS

3.1. MatLAB
La implementacin de algoritmos de visin artificial y de procesado de imagen es muy costosa en tiempo ya que necesita mecanismos de bajo nivel para tratar directamente con las imgenes en memoria. Esta es precisamente una de las razones por las que el lenguaje C++ es adecuado para su implementacin (por sus caractersticas compartidas de alto y bajo nivel). Sin embargo, implementar los desarrollos directamente en C++ tiene el riesgo de que tras invertir todo ese tiempo, el mtodo no funcione y haya que modificarlo o disear otro de nuevo partiendo de cero. A esto hay que sumar el tiempo de bsqueda y depuracin de los errores que existan en el cdigo antes de probar realmente el propio algoritmo. Todos estos errores y tiempo se pueden ahorrar utilizando una herramienta como MatLAB para la fase de diseo de algoritmos. De esta forma, a la hora de la implementacin definitiva en C++ tenemos la certeza de que los algoritmos funcionan correctamente, evitando redisear en caso de fallos. Fallos que, por otro lado, tenemos la seguridad de que se deben a errores de implementacin y no de diseo. Con esto evitamos frustrantes prdidas de tiempo a la vez que mejoramos la comprensin de los procesos a implementar. MatLAB es la abreviatura de Matrix Laboratory (laboratorio de matrices). Es un programa de anlisis numrico creado por The MathWorks en 1984. Est disponible para las plataformas Unix, Windows y Mac OS X. La versin utilizada en el presente proyecto ha sido la 7.0 (R 14). MatLAB dispone de unas bibliotecas especializadas para distintos tipos de aplicaciones llamadas toolboxes. Estas toolboxes contienen funciones (M-files) que amplian las funcionalidades de MATLAB para resolver problemas de mbitos particulares. Algunas de ellas estn destinadas al procesado digital de seal, adquisicin de datos, economa, inteligencia artificial, lgica difusa, etc. En nuestro caso ha resultado de gran inters la dedicada a procesado de imagen. La herramienta MatLAB ha sido elegida para el desarrollo de prototipos por las enormes posibilidades que ofrece en el procesado de imgenes. Entre otras, nos proporciona acceso a imgenes en distintos formatos mediante estructuras sencillas que nos permiten tratarlas como una matriz e implementaciones de la mayora de funciones ms comnmente utilizadas en el procesado de imagen. De esta forma, podemos centrarnos totalmente en el diseo de los algoritmos, sin preocupaciones de bajo nivel. Se ha mostrado como una herramienta de gran ayuda poder probar distintos mtodos y procedimientos, cuya implementacin en MatLAB resulta considerablemente ms sencilla que en C++. De esta forma, nos ha permitido elegir y corregir los que mejor se adaptaron a nuestras necesidades y descartar los dems. La utilizacin de las bibliotecas de procesado de imagen de MatLAB est ampliamente documentada, por lo que no nos detendremos aqu en dar una explicacin de las herramientas disponibles. Adems, la ayuda de este entorno es realmente til a la hora de consultar el funcionamiento de alguna de sus funciones, cosa que por desgracia no suele ser lo ms comn [MathWorks].

32

Captulo 3: HERRAMIENTAS UTILIZADAS

Adems de las pestaas y tablas de herramientas, podemos apreciar 3 zonas diferenciadas: 1. 2. 3. Ventana de comandos: Nos permite introducir comandos a ejecutar, variables, llamadas a funciones, etc. Workspace: donde se pueden visualizar todas las variables en uso y sus valores. Historial de comandos: donde se pueden consultar las acciones realizadas previamente..

Figura 3.1

Tambin disponemos de un editor con el que escribir y visualizar funciones y archivos ejecutables.

Figura 3.2

33

Captulo 3: HERRAMIENTAS UTILIZADAS

Aqu podemos observar uno de los prototipos en funcionamiento. Se ve como va mostrando figuras con los resultados obtenidos.

Figura 3.3

3.2. El lenguaje C++


El lenguaje de programacin elegido para la implementacin de este proyecto es C++ [Stroustrup][Deitel]. En la actualidad, es el lenguaje de programacin ms ampliamente utilizado en el campo de la visin artificial. Esto hecho hace que podamos encontrar gran cantidad de bibliotecas y funciones dedicadas al tratamiento y procesado de imagen (entre ellas la biblioteca VXL, de la que hablaremos ms adelante). C++ combina la rapidez y eficacia del lenguaje C clsico con la orientacin a objetos, lo que lo convierte en una herramienta muy potente para el desarrollo de programas que necesitan grandes cargas de trabajo. Este es el caso del procesado de imgenes digitales, en el que tenemos que manejar grandes cantidades de memoria y procesos con gran carga computacional. Por otro lado y sin perder de vista que este es un proyecto destinado a una aplicacin real e inmediata, haba que tener en cuenta el trabajo previo con el que era necesario enlazar el proyecto. Esta haba sido implementado en C++ utilizando el entorno de Visual Studio 2005. Utilizar el mismo entorno y lenguaje de programacin nos facilita la integracin de ambos sistemas. Si la sencillez y multitud de funcionalidades de Matlab lo hacan ideal para la realizacin de prototipos, la potencia y capacidad de integracin de C++ lo revelan como el lenguaje ms idneo para la herramienta final. 34

Captulo 3: HERRAMIENTAS UTILIZADAS

3.3. Visual Studio Professional 2005


Dado que en el LOMG se trabaja con hojas Excel para los informes de calibracin, el proyecto previo ha sido realizado en lenguaje Visual C++, dentro del entorno de desarrollo Microsoft Visual Studio Professional 2005, ya que ste proporciona las bibliotecas necesarias para el manejo y creacin de archivos Excel. Esto ha condicionado enormemente la eleccin del mismo entorno para el desarrollo de este proyecto, ya que necesitbamos asegurar la compatibilidad de funcionamiento e integracin de ambos sistemas. Sin embargo, se ha intentado que el cdigo utilizado sea lo ms estndar posible, permitiendo la migracin a cualquier otro compilador y sistema operativo que pueda ser utilizado en el futuro con el menor nmero de modificaciones posibles. Por esta razn, se ha decidido utilizar la herramienta CMake (que se explicar en el siguiente apartado) para enlazar las bibliotecas y preparar las opciones de compilacin en lugar de las propias opciones del entorno. En la figura 3.4 podemos ver el entorno Visual Studio 2005.

Adems de las pestaas y tablas de herramientas, podemos apreciar 4 zonas diferenciadas: 4. 5. 6. 7. Explorador de soluciones: nos permite ver y abrir los distintos archivos presentes en nuestro proyecto. Zona del editor: donde se pueden visualizar y editar los archivos. Ayuda (no demasiado til) Zona de resultados: donde se muestran avisos, errores de compilacin, etc.

Figura 3.4

35

Captulo 3: HERRAMIENTAS UTILIZADAS

3.4. La herramienta CMake


CMake [CMake] es una herramienta multiplataforma de cdigo libre empleada para configurar y dirigir el proceso de compilacin de aplicaciones. Para ello, utiliza ficheros independientes del compilador que vayamos a utilizar llamados CMakeLists.txt. En ellos se describe el proceso de compilacin y se establecen las dependencias. Cuando ejecutamos CMake, se generan los ficheros necesarios, dependiendo del compilador y sistema operativo que estemos utilizando. De esta forma, toda la informacin necesaria para compilar nuestro proyecto est en los ficheros CMakeList.txt y es independiente del compilador utilizado. La herramienta CMake soporta los compiladores ms habituales de C y C++, entre los que se encuentran gcc, C++ Builder o Visual Studio. Para preparar los archivos para ser compilados CMake necesita tres datos: el compilador que va a ser empleado, la direccin del cdigo fuente y la direccin donde se van a generar el cdigo objeto, las bibliotecas y los ejecutables producidos en la compilacin.

Figura 3.5

El uso de esta herramienta, para nuestro caso concreto, y los parmetros utilizados en los ficheros CMakeList.txt sern explicados en el apndice (B), dedicado a la compilacin del proyecto.

36

Captulo 3: HERRAMIENTAS UTILIZADAS

3.5. Las bibliotecas VXL


Trabajar con imgenes lleva consigo una serie de operaciones como cargar en memoria la imagen, salvarla, acceder a los pxeles, etc., que no son ni mucho menos triviales en C++. A esto hay que sumar la multitud de formatos existentes para guardar imgenes digitales. Debido a estas circunstancias, estn surgiendo en los ltimos aos una serie de bibliotecas que aportan capacidades como cargar o guardar imgenes en diversos formatos de forma independiente de estos u otras facilidades como estructuras para el manejo de los pxeles, etc. De entre las muchas existentes, se ha decidido usar para este proyecto la biblioteca VXL [VXL]. VXL es realmente una coleccin de bibliotecas en C++ diseada para su uso en visin por computador. Su objetivo es ser ligeras, rpidas y robustas. Adems, al estar escritas en ANSI/ISO C++ nos permiten total compatibilidad con multitud de plataformas. Estas bibliotecas se dividen en dos grupos, por una parte la biblioteca del paquete core, ncleo de VXL y por otra parte las bibliotecas del paquete contrib, que proporcionan funcionalidades complementarias, pero que no han sido usadas en el presente proyecto. Dentro del ncleo nos encontramos con las siguientes:

vnl (numerics): Algoritmos numricos para trabajar con matrices y vectores. vil (imaging): Funciones para cargar, guardar y manipular imgenes en multitud de formatos, incluyendo imgenes de gran tamao. vgl (geometry): Proporciona funciones para realizar operaciones geomtricas con puntos, curvas y otros elementos de 2 y 3 dimensiones. vsl (streaming I/O), vbl (basic templates), vul (utilities): Varias funcionalidades independientes de la plataforma.

Cabe destacar la presencia de una capa de compatibilidad con la librera estndar (STL) [Josuttis][STL]. STL es un conjunto de clases definidas en el estndar ISO C++ que aportan numerosas funcionalidades. El problema es que existen algunos compiladores que pueden dar problemas a la hora de utilizar estas bibliotecas. Para mantener la compatibilidad con cualquier compilador, VXL define su propia biblioteca estndar con las mismas funciones que la STL original. Esta capa de compatibilidad, que recibe el nombre de VCL, mantiene la misma estructura e interfaces y se compila de forma conjunta con VXL. De esta forma, todas las funciones de STL estarn disponibles, independientemente de que sean soportadas por el compilador o no. Para acceder a ellas utilizaremos la misma llamada que en la STL original precedida de vcl_. Por ejemplo, en lugar de cout utilizaremos vcl_cout. Informacin ms detallada sobre como compilar y enlazar las bibliotecas de VXL con nuestro programa se puede consultar en el apndice (B).

37

Captulo 3: HERRAMIENTAS UTILIZADAS

38

Captulo 4: DESARROLLO

Captulo 4 DESARROLLO

En este captulo describiremos todo el proceso que lleva a cabo el software de reconocimiento desde que recibe la imagen hasta que devuelve el resultado con el nmero ledo. Tambin se incluye un primer apartado dedicado a la captura de la imagen y la utilizacin del software de captura del que disponemos. Finalmente, presentamos una ltima seccin en la que se explica la interfaz de sockets implementada para permitir la compatibilidad del software reconocedor y su funcionamiento como servidor.

39

Captulo 4: DESARROLLO

4.1. CAPTURA DE LA IMAGEN


Uno de los pasos ms importantes, sino el que ms, en un sistema de visin artificial es la captura de la imagen. Muchas veces se le presta poca atencin, pero lo cierto es que obtener una buena imagen facilita mucho el trabajo de procesado posterior, mientras que si le imagen es mala puede llegar a ser imposible obtener la informacin buscada, por potente que sea el software de reconocimiento. Llegado este punto, debemos aclarar lo que entendemos por imagen buena o mala. Para nuestro caso, una buena imagen es aquella que presenta unas condiciones de iluminacin, enfoque, ausencia de sombras, etc. que permita a un observador humano interpretar, sin hacer un esfuerzo extraordinario, la misma informacin que queremos que sea interpretada por el sistema de visin artificial. 4.1.2. Proceso A continuacin describiremos el procedimiento seguido para obtener las imgenes en el presente proyecto. Para ello disponemos de las siguientes herramientas. Hardware: Cmara C-Cam BCi4: Nos proporciona imgenes de 1208 x 1024 puntos tanto en color RGB como en escala de grises

Figura 4.1

Lente de 25 mm: Nos permite obtener imgenes bien enfocadas desde distancias de unos 15 cm hasta 1 m aproximadamente. Es la lente que usaremos en la mayora de los casos. Lente de 75 mm: Permite obtener imgenes bien enfocadas desde distancias de 1.5 m hasta 10 m. Se utilizara cuando la disposicin fsica del dispositivo a medir no permita situar la cmara a una distancia en la que podamos utilizar la primera lente.

40

Captulo 4: DESARROLLO Software: El programa desarrollado en el proyecto previo de Ingeniera Informtica con el nombre Sistema de calibracin automtica de termohigrmetros [A. Dacal], se encarga de recoger los datos necesarios para la calibracin e interactuar con la cmara para sacar las imgenes que posteriormente interpretaremos.

No podemos perder de vista las condiciones del entorno de trabajo en las que el sistema est funcionando. Estamos hablando de un laboratorio en el que trabajan varios tcnicos haciendo mediciones y es necesario que el sistema interfiera lo menos posible en su trabajo. Por ello, es deseable situar la cmara lo ms cerca posible del dispositivo a fotografiar de forma que minimicemos la probabilidad de que el personal de laboratorio tenga que desplazarse entre cmara y objetivo (de ah que sea preferible utilizar la lente de 25 mm siempre que sea posible). Tambin es necesario, ya que el proceso de calibracin puede tardar varias horas, que no se muevan ni la cmara ni el objetivo durante ste. Todos estos detalles, si bien son fundamentales para el funcionamiento del sistema, se dejan al buen criterio del personal del laboratorio.

Entorno de trabajo del laboratorio

Figura 4.2 41

Captulo 4: DESARROLLO Otro aspecto importante es jugar con la orientacin de la pantalla del dispositivo a medir y de la cmara con respecto a los focos de luz hasta lograr minimizar la presencia de brillos y sombras en la imagen. Aunque el software de reconocimiento cuenta con elementos para corregir estos problemas (como explicaremos en el apartado correspondiente) son indudables las ventajas de eliminarlos en la toma de imgenes, frente a un posterior procesado. Siempre es mejor evitar la presencia de ruido que tener que eliminarlo despus. Lo deseable sera disponer de unos focos de luz difusa para evitar estos casos, pero esta propuesta fue descartada por razones de incompatibilidad con el trabajo en el laboratorio. En la figura 4.3 podemos ver ejemplos de imgenes bien tomadas atendiendo a este aspecto e imgenes con brillos y sombras.

Imgenes bien tomadas.

Imgenes tomadas con una iluminacin deficiente

Figura 4.3

Otro criterio es la inclinacin. El software desarrollado es capaz de corregir la inclinacin de la pantalla, pero de nuevo volvemos sobre el mismo aspecto: siempre es preferible la ausencia de error que la posibilidad de corregirlo. Sin embargo, existen dispositivos en los que, por su forma fsica, contornos redondeados, etc., es muy complicado conseguir una total horizontalidad de la pantalla. Tambin es de gran importancia un correcto ajuste del enfoque. Si este est bien ajustado el borde entre las cifras y el fondo de la pantalla estar bien delimitado. Con un mal ajuste, el paso de cifra a fondo de pantalla ser progresivo. Esto implica que, al no 42

Captulo 4: DESARROLLO haber una transicin abrupta, aparezcan muchos pxeles con niveles de intensidad situados en el intervalo entre la intensidad de las cifras y la del fondo de pantalla. Esta situacin dificultar la segmentacin posterior. En la figura 4.4 podemos ver un ejemplo del mismo display bien y mal enfocado.

Imagen desenfocada

Imagen bien enfocada

Figura 4.4

4.2. PREPROCESADO
4.2.1. CONVERSIN DE COLOR A ESCALA DE GRISES El sistema de reconocimiento objeto de este proyecto permite el funcionamiento tanto con imgenes en color como con imgenes en escala de grises. Tambin puede trabajar con los formatos ms habituales de imagen, incluyendo archivos bmp, jpg, png, etc. Sin embargo, para nuestro objetivo no necesitamos trabajar con los colores de la imagen, por lo que utilizaremos imgenes en escala de grises. Lo primero que hacemos cuando cargamos una imagen para reconocer es comprobar si es una imagen con un solo plano de escala de grises o con tres planos de color, en cuyo caso tendremos que convertirla al primer formato. Esta conversin es trivial y pocas veces se le presta atencin. El procedimiento bsico consiste en promediar los tres niveles de color, rojo, verde y azul, en un solo nivel de intensidad. Sin embargo, una correcta distribucin de los pesos otorgados a cada uno de los tres colores puede ayudar a resaltar determinadas caractersticas que sean de mayor inters y ocultar otras que no lo sean tanto. Un mal ajuste en los pesos dados a cada plano de color puede dar como resultado que dos colores diferentes resulten en una misma intensidad en la escala de grises, impidiendo diferenciarlos. Hay numerosas tcnicas para convertir imgenes en color a escala de grises. En la figura 4.5 se pueden ver varios ejemplos de ellas y de cmo, dependiendo de los pesos asignados, se pueden distinguir con mayor o menor facilidad los diferentes 43

Captulo 4: DESARROLLO colores. En este proyecto se ha seguido la recomendacin ITU-R BT.709, que asigna los pesos 0.2125, 0.7154 y 0.0721 al rojo, verde y azul respectivamente. gris = 0.2125 rojo + 0.7121 verde + 0.0721 azul

Imagen original en color.

(rojo + verde + azul)/3

(3 rojo + 4 verde + 2 azul)/9

Sistemas NTSC y PAL: 0.299 rojo + 0.587 verde + 0.114 azul

Figura 4.5

44

Captulo 4: DESARROLLO

ITU-R BT.709: 0.2125 rojo + 0.7154 verde + 0.0721 azul

Figura 4.5b

4.2.2. BINARIZACIN Antes de pasar a explicar los diferentes mtodos de binarizacin utilizados, debemos aclarar que, por convenio, hemos decidido presentar siempre los caracteres de inters en blanco y el fondo de pantalla en negro. Para ello, despus de llevar a cabo la binarizacin de la imagen, hacemos un recuento de pxeles blancos y negros. Lo normal es que el nmero de pxeles pertenecientes al fondo de pantalla sea mayor que el de los caracteres. Por tanto, si el nmero de pxeles contados en negro es mayor que el de blancos dejamos la imagen como est, si es menor, la invertimos. Independientemente del proceso de binarizacin empleado, posteriormente, realizamos un filtrado de mediana a la imagen resultante, con el que eliminamos el posible ruido puntual (pxeles blancos aislados o pequeos grupos). A continuacin, pasamos a explicar los detalles de los distintos mtodos de binarizacin implementados. En realidad, no son propiamente mtodos de binarizacin, sino de clculo del umbral necesario para esta. El proceso posterior de binarizacin es trivial y se limita a poner a 1 los puntos que estn por encima del umbral y a 0 los que estn por debajo.

4.2.2.1. Mtodo de deteccin de picos Observando el histograma de la imagen de una pantalla a estudio, podemos ver que en la mayora de los casos estamos ante un histograma bimodal. De esta forma, un buen umbral para la binarizacin estara situado en el mnimo local que se encuentra entre los dos mximos locales de los dos picos. En la figura 4.6 tenemos un ejemplo de una pantalla y un histograma de este tipo.

45

Captulo 4: DESARROLLO

Figura 4.6

Un mtodo efectivo para la bsqueda de ese umbral consiste en utilizar una ventana deslizante para localizar los mximos locales [F. Martn 2]. Para ello, desplazamos esta ventana a lo largo de los valores de intensidad del histograma, considerando que un punto es un mximo local si, estando en el centro de la ventana, es el mximo de esta. Una vez localizados los mximos locales, solamente hay que buscar el mnimo situado entre estos y tomarlo como umbral. Este mtodo funciona bien cuando tenemos dos intensidades claramente dominantes como es el caso de unos dgitos sobre el fondo de una pantalla. Sin embargo, es frecuente que aparezcan picos de ruido como los mostrados en la figura 4.7 debidos a machas en el display, suciedad, etc. Para eliminarlos, aplicaremos un filtrado de mediana al propio histograma mediante una ventana deslizante de dimensin 3 que vamos desplazando a lo largo de este. El resultado de este filtrado es el que vemos en la figura 4.8.

46

Captulo 4: DESARROLLO

Figura 4.7

Figura 4.8

47

Captulo 4: DESARROLLO

Cabe destacar que hay que llegar a un compromiso en el tamao de la ventana empleada para la bsqueda de mximos locales. Si es demasiado grande no detectaremos los mximos que estn prximos entre si (que caigan dentro de la misma ventana). Si es demasiado pequea, detectaremos falsos mximos debidos a pequeos picos de manchas, etc. que no se corresponden con las zonas a separar. En nuestro caso, hemos tomado una ventana de tamao 11. El hecho de escoger una ventana relativamente pequea se debe a que frecuentemente trabajamos con imgenes en las que hay un bajo contraste entre los caracteres de inters y el fondo de pantalla, por lo que los dos picos estn prximos entre si. Adems, el peligro de detectar picos secundarios no supone un mayor problema, ya que en este caso disponemos de un mtodo de binarizacin alternativo (que ser explicado en los siguientes apartados).

4.2.2.2. Mtodo iterativo Es un mtodo basado en aproximaciones sucesivas en el que se repiten una serie de pasos hasta que el resultado converge. La recursin es la siguiente [Gonzalez & Woods]: 1. Se fija T al valor 0.5 y se toma un umbral inicial T1 (n) igual a la suma del mximo valor de intensidad de la imagen y el mnimo dividido por 2. T = 0.5
T1 ( n) = max(img ) + min(img ) 2

2. Se divide la imagen en dos zonas: por un lado los puntos con intensidad mayor que T1 (n) y por otro los de menor. 3. Se calcula la intensidad media de cada una de las zonas, 1 y 2 . 4. Se calcula el nuevo T1 (n + 1) como la media de las dos intensidades medias. 1 + 2 T1 (n + 1) = 2 5. Si T1 = T1 (n + 1) T1 (n) es mayor o igual que T se vuelve al paso 2, si T1 es menor que T se termina. En la figura 4.9 se muestra una comparacin entre el mtodo de bsqueda de picos y el mtodo iterativo propuesto.

48

Captulo 4: DESARROLLO

Mtodo de bsqueda de picos

Mtodo iterativo

Figura 4.9

Podemos ver como, para la misma imagen propuesta, el mtodo de bsqueda de picos se comporta mejor, manteniendo los caracteres separados, mientras que el mtodo iterativo tiende a unir caracteres prximos. Sin embargo, el segundo mtodo es robusto frente a histogramas con mltiples picos, en los que el primero no puede decidir.

4.2.2.3. Mtodo adaptativo Hay ocasiones en las que los mtodos anteriores no funcionan, sobretodo por motivos de iluminacin, presencia de sombras, etc. En esto casos el umbral calculado para toda la imagen puede no ser recomendable en algunos puntos de esta, bien porque estn ms oscuros por una sombra o ms claros por un reflejo. Un ejemplo de esta situacin lo podemos ver en la figura 4.10, en la que un trozo del nmero desaparece por estar ms iluminado que el resto de la pantalla.

Imagen de una pantalla con una zona ms clara entre el 4 y el 9 debida a una mala iluminacin

Imagen binarizada con un nico umbral global.

Figura 10

49

Captulo 4: DESARROLLO Una solucin para esta situacin consiste en dividir la imagen en trozos y calcular el umbral para cada uno de ellos [F. Martn] [Ohya]. De esta forma, las zonas afectadas por un brillo o sombra tendrn un umbral adaptado a su diferente condicin de iluminacin. El mtodo empleado para calcular el umbral en cada cuadro es el iterativo explicado en el apartado anterior, ya que son zonas demasiado pequeas para la bsqueda de picos. Para evitar un aspecto abaldosado de la imagen binarizada debido a bordes abruptos entre los distintos cuadros, hacemos una interpolacin bilineal de los umbrales calculados para cada zona. As, tenemos realmente un umbral para cada pxel y conseguimos una transicin suave entre zonas diferentemente iluminadas. El numero de trozos en los que dividir la imagen ha sido objeto de estudio y numerosas pruebas. Aunque en una primera aproximacin puede parecer que cabra esperar unos mejores resultados cuanto mayor fuese el nmero de baldosas, no es as. En la figura 4.11 se muestra un ejemplo de una situacin con diferentes nmeros de divisiones.

Binarizacin con rejilla 8 x 8

Binarizacin con rejilla 16 x 16

Binarizcin con rejilla 4 x 3 (solucin adoptada)

Figura 4.11

A medida que aumentamos el nmero de cuadros, disminuye el tamao de estos. Si reducimos el tamao hasta el punto de que existan cuadros que solo ocupen un tipo de zona (frecuentemente fondo de pantalla), el umbral producido por estos ser completamente falso, dando lugar a manchas blancas en la imagen que impedirn su correcta interpretacin.

50

Captulo 4: DESARROLLO Del estudio del caso concreto que nos ocupa, se puede apreciar que son convenientes rectngulos de un mayor ancho que alto para evitar que se puedan situar trozos en los espacios entre cifras. La solucin adoptada consiste en una rejilla de 4 divisiones horizontales por 3 verticales con la que se obtuvieron los mejores resultados para las imgenes probadas.

4.2.2.4. Solucin adoptada La solucin implementada en el proyecto consiste en utilizar en primer lugar el mtodo de bsqueda de picos y, si el resultado no es bueno, pasar al mtodo adaptativo. La clave esta en decidir si un umbral es bueno o malo. Una primera criba se realiza realmente antes de su clculo. Si el nmero de picos dominantes no es dos descartamos directamente el primer mtodo. En otro caso necesitamos calcular la calidad del umbral obtenido (mediante el mtodo explicado en el siguiente apartado). Si la calidad es buena se utiliza ese umbral, si la calidad es mala, se pasa al mtodo adaptativo. La principal restriccin en cuanto al clculo de mltiples umbrales es la mayor carga computacional. Sin embargo, esa no es una limitacin en la aplicacin objetivo de este proyecto, en el que transcurre un tiempo infinitamente grande entre cada una de las solicitudes de procesado de imagen en comparacin con el tiempo empleado en cada una de ellas. Y entonces, por que no usar siempre este mtodo? La razn es simple. En los casos en los que la calidad del umbral es buena se ha comprobado un mejor funcionamiento del mtodo de bsqueda de picos.

4.2.2.5. Calculo de la calidad del umbral Para medir la calidad del umbral calculamos el porcentaje de pxeles situados en el entorno de este (ver figura 4.12).

51

Captulo 4: DESARROLLO

Figura 4.12

El conjunto de pxeles a considerar estara formado por los situados en el intervalo X entorno al umbral U, calculado como X = 0.15 ( M 1 M 0 ) [F. Martn] Siendo M1 y M2 la media de los pxeles blancos y negros respectivamente. De esta forma, si ese porcentaje es mayor que el 2.5% consideramos que la calidad es mala. En caso contrario la damos por buena.

4.2.3. RECORTE GRUESO Una vez que tenemos la imagen binaria con los caracteres en blanco y el fondo en negro, tendremos que seleccionar le zona de inters. Pera ello, eliminaremos los bordes superior e inferior en un primer paso y los trozos a izquierda y derecha del numero a leer en un segundo paso. El mtodo utilizado ser el clsico de las proyecciones. Por proyeccin horizontal entendemos el vector de longitud igual al ancho de la imagen (segn el 52

Captulo 4: DESARROLLO convenio utilizado, ni()) en el que cada componente es la suma de los valores de la correspondiente columna en la imagen. De forma similar obtenemos la proyeccin vertical como suma de filas. Finalmente, para trabajar con valores normalizados, dividimos cada componente del vector proyeccin por el mximo, de forma que sus valores queden comprendidos en el intervalo [0, 1]. En la figura 4.13 podemos ver la imagen de una pantalla binarizada y sus correspondientes proyecciones horizontal y vertical.

Pantalla binarizada

Proyeccin horizontal

Proyeccin vertical

Figura 4.13

4.2.3.1. Primer paso: recorte horizontal Una vez obtenida la proyeccin vertical, recorreremos el vector empezando en cero para recortar la parte superior y empezando en el ltimo punto para borrar la parte inferior. Para facilitar la comprensin del algoritmo e independizar la explicacin de las decisiones de implementacin, nos centraremos en la grfica proyeccin en lugar del vector. De esta forma, hablaremos de inspeccionar la grfica de izquierda a derecha y de derecha a izquierda para encontrar los puntos de corte superior e inferior respectivamente. Cuando en el recorrido detectemos el comienzo de la zona de caracteres marcaremos ese punto en la grfica como fila de corte en la imagen original.

53

Captulo 4: DESARROLLO El problema es como saber si un punto se corresponde con el inicio de un carcter. Un mtodo sencillo sera considerar cualquier valor mayor que cero como carcter. Este no es un buen mtodo, ya que fallara ante la presencia de cualquier pequeo ruido. La solucin adoptada consiste en analizar cambios de pendiente en el vector proyeccin. El inicio de la zona de caracteres viene delimitado por una transicin rpida de valores bajos a valores altos como podemos ver en la figura 4.14. En un primer momento y tras probar con diversos valores, so observ un buen funcionamiento considerando ascensos superiores a 0.2 (sobre el total comprendido entre 0 y 1) en intervalos de 4 puntos. Sin embargo, estos valores no tienen en cuenta las dimensiones de la imagen, que pueden llegar a variar en un rango bastante amplio1. Una solucin sencilla y que funciona bien para nuestra aplicacin consiste en declarar diferentes tamaos para los intervalos en funcin de las dimensiones de la imagen. Para nuestro caso fue suficiente con declarar un intervalo de 4 puntos para imgenes con una altura inferior a 200 lneas y un intervalo de 8 puntos para imgenes con una altura superior a 200 lneas. Este mtodo nos proporciona robustez frente a picos de ruido.

(a) Zona de rpida transicin que indica inicio de carcter. (b) Esta perturbacin debida a ruido ser descartada por no presentar una transicin abrupta.

Figura 4.14

Dado que la cmara utilizada toma imgenes de 1280x1024 pxeles, dependiendo de la distancia y el tamao del display, la pantalla recortada suele presentar dimensiones desde 100x50 hasta 800x400 puntos.

54

Captulo 4: DESARROLLO El resultado de este primer paso se muestra en la figura 4.15, en la que podemos ver como se ha conseguido eliminar la macha de ruido que haba en la esquina inferior derecha de la pantalla1.

Figura 4.15

4.2.3.2. Segundo paso: recorte lateral Una vez que hemos recortado las partes inferior y superior, realizamos la proyeccin horizontal. Al obtenerla ahora y no antes del recorte horizontal conseguimos eliminar el posible ruido presente en los trozos cortados, proporcionando una mayor claridad a la grfica (ver figura 4.16).

Podemos ver claramente como al realizar la proyeccin despus del recorte horizontal se consigue eliminar el ruido que apareca en el lado derecho debido a una mancha en la esquina inferior derecha de la imagen original.

Figura 4.16

De igual forma que en el primer paso, inspeccionamos la grfica de izquierda a derecha y de derecha a izquierda para encontrar los puntos de corte que marquen el

En realidad era un trozo de alguna indicacin mostrada en la pantalla, pero la consideramos ruido por no presentar ningn tipo de informacin que nos resulte de inters.

55

Captulo 4: DESARROLLO comienzo de los caracteres. Estos puntos se correspondern con las columnas por donde habr que recortar la imagen original. En este caso, los valores frontera tomados para las transiciones han sido un ascenso de 0.06 sobre el total normalizado entre 0 y 1 en intervalos de 4 puntos para imgenes con un nmero de columnas inferior a 500 y 8 puntos para imgenes con un nmero de columnas superior a 500. El hecho de haber marcado unos valores menos restrictivos a la pendiente se debe a que el inicio de los caracteres en la proyeccin horizontal es menos abrupto que el que delimita la lnea de inters en la proyeccin vertical. Quiz con un ejemplo resulte ms sencillo aclarar esto. Supongamos que la primera cifra del nmero a interpretar es un 7. Su proyeccin se muestra en la figura 4.17. Resulta sencillo ver como el inicio del carcter por el lado izquierdo es mucho menos abrupto que en el lado derecho.

Figura 4.17

El resultado final, despus de ambos recortes, es el mostrado en la figura 4.18.

Figura 4.18

56

Captulo 4: DESARROLLO Debemos sealar que los valores que fijados para los recortes se han ajustado para proporcionar el mejor funcionamiento con las pantallas de los dispositivos con los que normalmente se trabaja en el departamento de temperatura y humedad del LOMG. En el caso de disponer de pantallas ms claras se podra trabajar con valores menos restrictivos, mientras que en situaciones de mayor ruido (debido a mala iluminacin, displays sucios o deteriorados, etc.) se podran elevar estos lmites.

4.2.4. CORRECIN DE LA INCLINACIN El mtodo para la correccin de la inclinacin en la imagen ha sido diseado a medida para el problema que se nos plantea. Aunque es similar al mtodo de Hough [Duda][G. Pajares], no necesita engorrosas transformaciones ni cambios de coordenadas. En realidad, es un mtodo bastante intuitivo, como mostraremos a continuacin. Debemos resaltar que la parte interesante del mtodo es el clculo del ngulo de inclinacin, ya que la rotacin propiamente dicha es comn a cualquier mtodo y la podemos encontrar implementada en la mayora de bibliotecas de procesado de imagen.

4.2.4.1. Clculo del ngulo de inclinacin Para encontrar el ngulo de inclinacin, nos fijaremos en la lnea horizontal que sigue el nmero a lo largo de la pantalla. Para ello, utilizaremos la parte superior de las cifras, ya que, en la mayora de os formatos presenta una mayor cantidad de trazos horizontales que la inferior1. Observando la lnea que pasa por esos trazos y empleando operaciones trigonomtricas bsicas resulta sencillo calcular el ngulo de inclinacin.

Figura 4.19

El procedimiento es el siguiente:
1

Si se tratara de texto en lugar de nmeros, donde nos encontramos con letras de distintas alturas como por ejemplo la d y la o, utilizaramos la parte inferior.

57

Captulo 4: DESARROLLO En primer lugar hacemos una bsqueda por columnas en la imagen para localizar la posicin de los puntos de transicin de negro a blanco. En este proceso descartamos aquellas posiciones que estn por debajo del 20% del total por considerar que no pertenecen a la parte superior de la cifra. Tambin son filtrados los pxeles aislados1, para asegurar que los trazos se ajusten de la mejor forma posible a una lnea. En la figura 4.20 podemos ver una imagen de esa seleccin de puntos.

Imagen inclinada

Trazos sin filtrar

Trazos filtrados

Figura 4.20

El siguiente paso es tomar dos de esos puntos, preferentemente de los extremos para minimizar el error. Uno de los puntos, al que llamaremos a, est ms cercano al borde superior de la imagen, mientras que al ms alejado lo denominaremos b. Con ellos y un tercer punto situado en la proyeccin de b sobre la lnea horizontal en la que se sita a formamos un tringulo rectngulo. Llegado este punto, ya tenemos todos los datos necesarios para calcular la tangente de ese tringulo, que es una buena aproximacin del ngulo para valores inclinacin menores de 15. Para valores mayores los resultados pueden estar tabulados. La imagen con la inclinacin corregida se muestra en la figura 4.21, en la que podemos apreciar que el tamao original ha aumentado tras la rotacin.

Es un procedimiento de filtrado sencillo que, bsicamente, consiste en descartar aquellos pxeles que no tienen ningn compaero a su derecha y a su izquierda. As se evitan tambin las diagonales que suelen aparecer en los bordes de los nmeros.

58

Captulo 4: DESARROLLO

Figura 4.21

Ya solo queda eliminar los bordes en la imagen final.

Figura 4.22

4.3. SEGMENTACIN DE CARACTERES


El proceso de segmentacin consiste en separar cada cifra del conjunto de la imagen para poder interpretarla de forma individual. Para ello nos apoyaremos en la tcnica de las proyecciones vista en apartados anteriores, pero en este caso con algunas modificaciones. En primer lugar explicaremos el procedimiento bsico de separacin de caracteres. Posteriormente abordaremos una serie de tcnicas aadidas a este proceso que ayudan a evitar y corregir errores en la segmentacin.

4.3.1. Proyecciones mejoradas Para eliminar picos en los vectores proyeccin debidos a pxeles de ruido en la imagen y separar caracteres que estn demasiado juntos o incluso solapando la parte superior de uno con la inferior de otro, utilizamos lo que hemos llamado proyecciones mejoradas. A continuacin explicaremos el caso de la proyeccin horizontal, siendo anlogo el de la proyeccin vertical.

59

Captulo 4: DESARROLLO En lugar de tomar las sumas de las columnas para cada componente del vector proyeccin, tomamos el producto escalar entre dos columnas. Estas podran ser columnas consecutivas (columna i y columna i+1), pero hemos comprobado un mejor funcionamiento frente al ruido utilizando las columnas i-1 e i+1. Como se puede apreciar en la figura 4.23, este procedimiento, adems de eliminar ruido, permite una mayor capacidad de separacin entre caracteres cuando los lmites son dudosos.

Proyeccin tradicional

Proyeccin mejorada

Figura 4.23

Finalmente, al igual que con las proyecciones tradicionales, dividimos cada componente del vector por el mximo para trabajar con valores normalizados.

4.3.2. Procedimiento bsico Una vez que tenemos la proyeccin horizontal de la imagen a segmentar1, procedemos a la bsqueda de caracteres. Empezamos de derecha a izquierda (por las cifras menos significativas), ya que la transicin que marca el inicio de una cifra suele estar mejor definida por ese lado. El mtodo empleado consiste en una bsqueda de mnimos con histresis. Lo que esto significa es que utilizamos niveles diferentes para marcar el inicio y el fin de carcter. Esto nos permite eliminar errores debidos a picos de ruido de forma similar a como acta un circuito de histresis eliminando los rebotes de un pulsador. Marcamos el inicio de carcter cuando la proyeccin supera un determinado valor y no marcamos su fin hasta que se alcanza un valor fijado a un nivel inferior al inicial. Los valores fijados tras numerosas pruebas han sido 0.06 (sobre el rango de 0 a 1) para el inicio de carcter y 0.01 para el fin. De esta forma, una vez marcado el final
1

A partir de este punto, trabajaremos con las proyecciones mejoradas, aunque el desarrollo es perfectamente vlido tambin para las simples.

60

Captulo 4: DESARROLLO de carcter, tendremos un margen de ruido para evitar falsas detecciones en el espacio entre caracteres.

En la figura 4.24 se muestran, de forma exagerada para poder verlo grficamente, los puntos de marcado.

Utilizando histresis en los puntos de marcado se evitan los errores que produciran los picos de ruido presentes en el espacio entre caracteres.

Figura 4.24

4.3.3. Tcnicas complementarias Tras la primera estimacin de los lmites de cada carcter usando las proyecciones, se llevan a cabo una serie de comprobaciones aadidas para validar la segmentacin. Si los resultados son favorables se seguir adelante con el corte propuesto, sino se har una correccin de la segmentacin inicial.

61

Captulo 4: DESARROLLO Relacin de aspecto: Definimos la relacin de aspecto de un carcter como el cociente entre las dimensiones vertical y horizontal del rectngulo ms pequeo que lo contiene.

R=

Dvertical Dhorizontal

Figura 4.25

Todos los formatos numricos que hemos observado en los dispositivos a los que hemos tenido acceso presentaban una relacin de aspecto superior a 1. En trminos generales, R se mueve en el intervalo [1.5, 2] (relaciones alto/ancho de 3/2 a 2/1). Teniendo esto en cuenta, podemos utilizar la relacin de aspecto de las cifras para separar caracteres que hayan podido quedar unidos en el proceso de binarizacin. Si un carcter segmentado presenta una relacin de aspecto inferior a lo esperado consideraremos la posibilidad de separarlo en dos. En este sentido, hemos decidido ser conservadores, bajando el umbral de R al valor 1.2 para evitar detectar falsas uniones. Nmero de picos y mnimo central: En caso de detectar una relacin de aspecto por debajo de la esperada, tendremos que separar en dos el carcter inicial. Para buscar el punto de corte comprobaremos el nmero de picos en la proyeccin del carcter y el mnimo central. Del estudio de las proyecciones horizontales de diferentes formatos numricos, observamos que ninguna cifra presenta un nmero de picos superior a 3. En un principio, se pens en utilizar esta caracterstica para determinar que dos caracteres se haban segmentado unidos en caso de presentar un nmero de picos superior. El problema es que la aparicin de caracteres unidos se da en situaciones de elevado ruido (debida a una mala iluminacin, enfoque de la lente, contraste, etc.), lo que tambin resulta en una modificacin del aspecto de las cifras y, por tanto, el nmero de picos presente en sus proyecciones.

62

Captulo 4: DESARROLLO Por esta razn se descart el uso de este mtodo como decisor, pero se mantiene para localizar el mnimo central por el cual dividir en dos cifras. El procedimiento es el de ventana deslizante explicado anteriormente. Bsqueda de punto decimal en formatos inclinados: Es frecuente que los dispositivos presenten pantallas en cursiva con un grado de inclinacin que hace que la parte superior derecha de la cifra de las unidades se solape en la proyeccin con el punto decimal. En estos casos se segmentara en un nico trozo la cifra y el punto. En la figura 4.26 se muestra un ejemplo de esta situacin. La parte superior del 2 se solapa con el punto decimal. Podemos ver en la proyeccin horizontal como resulta imposible distinguir el 2 del punto, ya que aparecen en un nico bloque.

Figura 4.26

63

Captulo 4: DESARROLLO Para hacer frente a estas situaciones, realizamos una inspeccin de la parte inferior del carcter en busca de una fragmentacin que indique la presencia del punto. Para ello empleamos la proyeccin del trozo inferior de la imagen.

Figura 4.27

En la figura 4.27 podemos ver como ahora s resulta sencillo separar el 2 del punto. En la implementacin se ha decidido utilizar la parte inferior correspondiente al 25% de la altura de la imagen.

4.4. RECONOCIMIENTO
4.4.1. EXTRACCIN DE CARACTERSTICAS Existen multitud de caractersticas a tener en cuenta en una imagen a la hora de clasificarla, por lo que en cada caso tendremos que seleccionar aquellas que mejor se adapten a nuestra aplicacin. En esta seccin abordaremos los mtodos empleados para la extraccin de los vectores de caractersticas que nos permitan una mejor diferenciacin entre los elementos a clasificar, que en nuestro caso son las cifras de una pantalla. 4.4.1.1. Escalado En primer lugar, para trabajar con imgenes normalizadas en tamao, realizamos un escalado de la cifra a la que queremos extraer caractersticas. Para ello la transformamos a un tamao fijo de 16 x 16 pxeles. Lo normal es que la imagen de entrada original tenga unas dimensiones mayores, por lo que el proceso ser en realidad un diezmado. En caso contrario, habr que agrandar la imagen original, por lo que trabajaremos por debajo de la resolucin mnima. Para el proceso de diezmado dividiremos la imagen de entrada en un nmero fijo de rectngulos de tamao m0 xn0 . Cada uno de esos rectngulos se transforma en un 64

Captulo 4: DESARROLLO nico pxel al que se asigna el valor de la media, que en el caso de una imagen binaria se aproxima a 0 o 1.

Figura 4.28

Llamaremos m1 y n1 a los tamaos iniciales de la imagen y m2 y n2 a los tamaos finales (en nuestro caso 16x16). Si los tamaos originales son mltiplos de los tamaos destino, el resultado es muy sencillo, siendo todos los rectngulos en los que hay que dividir la imagen de igual tamao.
m0 = m1 n1 ; n0 = m2 n2

En caso de que no sean mltiplos enteros, la conversin ser ms compleja. Explicaremos a continuacin el caso para la dimensin horizontal ( m1 y m2 ) siendo anlogo para la conversin de la dimensin vertical. En primer lugar tendremos dos posibles tamaos para los m2 trozos: m0 = Parte _ entera _ de[m1 / m2 ] m0 = m0 + 1 Por otra parte, llamaremos k al nmero de trozos de tamao m0 y k al nmero de trozos de tamao m0 . As, podemos obtener dos ecuaciones simples:

65

Captulo 4: DESARROLLO Nmero de pxeles de la imagen original: m1 = m0 k + m0 k Nmero de pxeles de la imagen destino: m2 = k + k A partir de estas dos ecuaciones podemos obtener de forma sencilla los valores de k y k:
k= m1 m 0 ' m 2 m 0 m 0'

k ' =m 2 k

Para el eje vertical se procede de la misma forma. Posteriormente, queda distribuir los rectngulos de diferente tamao sobre la trama de la imagen original. Para evitar una descompensacin en la imagen resultante, distribuimos de forma alterna trozos de longitud m0 y m0 (de igual forma para la distribucin vertical). Al convertir las imgenes de entrada (cifras) a un tamao constante de 16x16, generalmente modificamos su relacin de aspecto. Sin embargo, lejos de suponer un inconveniente, resulta ventajoso, ya que conseguimos independizar la relacin de aspecto original de la imagen, del proceso de extraccin de caractersticas (ver figura 4.29).

Para el sistema ambas cifras tendrn las mismas caractersticas.

Figura 4.29

A modo de ejemplo, podemos ver en la figura 4.30 el resultado del proceso de diezmado sobre una de las cifras utilizadas como patrn.

66

Captulo 4: DESARROLLO

Figura 4.30

Una vez realizado el escalado, ya tenemos los caracteres listos para la extraccin de caractersticas. Para ello, usaremos los mtodos descritos a continuacin. Tambin se incluye un apartado en el que se indican mtodos probados que finalmente fueron descartados y por qu.

4.4.1.2. Proyecciones El mtodo de las proyecciones es un procedimiento de extraccin de caractersticas ampliamente extendido en el campo de los OCR. La forma de realizar las proyecciones es la misma que se ha explicado en apartados anteriores. En un primer momento se prob a utilizar como vectores de caractersticas las proyecciones horizontal y vertical del carcter a reconocer. Sin embargo, estas no son discriminantes a la hora de identificar ciertos caracteres. En la figura 4.31 podemos ver un ejemplo de esta situacin. Al observar las proyecciones de los nmeros 2 y 5 nos damos cuenta de que, en el formato de 7 segmentos, son iguales.

Figura 4.31

67

Captulo 4: DESARROLLO

Figura 4.31b

Para evitar este problema, la solucin adoptada ha sido la que hemos denominado medias proyecciones. 4.4.1.3. Medias proyecciones En lugar de realizar las proyecciones horizontal y vertical directamente, dividimos la imagen en dos zonas y obtenemos dos pares de proyecciones. Para la divisin tomamos el eje horizontal central, partiendo la imagen en dos trozos al 50% de su altura. As, conseguimos eliminar las coincidencias en el vector proyeccin de todos los formatos numricos estudiados.

Figura 4.32

Tras este proceso disponemos de cuatro vectores de caractersticas: Horizontal superior (de longitud 16). Vertical superior (de longitud 8). Horizontal inferior (de longitud 16). Vertical inferior (de longitud 8).

68

Captulo 4: DESARROLLO 4.4.1.4. Gradientes de Kirsch Otro mtodo de extraccin de caractersticas empleado ser la deteccin de componentes direccionales de Kirsch. Para ello, sobre la imagen original escalada a tamao 16x16, definimos cuatro componentes direccionales: horizontal, vertical, diagonal primera y diagonal segunda. La divisin de una imagen en sus componentes se muestra con un ejemplo en la figura 4.33.

Imagen original

Horizontal

Vertical

Diagonal 1

Diagonal 2

Figura 4.33

En una imagen sencilla como la del ejemplo resulta fcil separar sus componentes direccionales, pero para imgenes ms complejas no lo ser tanto. Para estos casos disponemos del operador gradiente de Kirsh que explicaremos a continuacin. Para ello utilizaremos la notacin que se muestra en la figura 4.34 para el entorno de un pxel.

A0 A7 A6

A1 (i,j) A5

A2 A3 A4

Figura 4.34

Se define: S k = Ak + Ak +1 + Ak + 2 Tk = Ak + 3 + Ak + 4 + Ak + 5 + Ak + 6 + Ak + 7

Para las que debemos considerar k como circular mdulo 8.

69

Captulo 4: DESARROLLO A partir de estas frmulas podemos obtener las componentes direccionales del gradiente. Horizontal: GH (i, j ) = max ( 5S0 3T0 , 5S4 3T4 ) . Vertical: GV (i, j ) = max ( 5S2 3T2 , 5S6 3T6 ) . Diagonal 1: GD1 (i, j ) = max ( 5S1 3T1 , 5S5 3T5 ) . Diagonal 2: GD2 (i, j ) = max ( 5S3 3T3 , 5S7 3T7 ) .

Aplicar estas operaciones a cada pxel de la imagen sera equivalente a realizar un filtrado con las mscaras de la figura 4.35 y tomar el mayor de los dos posibles para cada componente.

Horizontal

5 5 5 3 0 3 3 3 3

3 3 3 3 0 3 5 5 5

Vertical

3 3 5 3 0 5 3 3 5
5 3 5 3 0 5 3 3 3 3 3 3 3 0 5 3 5 5

5 3 3 5 0 3 5 3 3
3 3 3 5 0 3 5 5 3 5 3 5 5 0 3 3 3 3

Diagonal primera

Diagonal segunda

Figura 4.35

Aplicando estas operaciones a todos los pxeles de la imagen obtenemos 4 imgenes con las 4 componentes horizontal, vertical, diagonal primera y diagonal segunda. Necesitamos trabajar con vectores de caractersticas y no con matrices, as que tendremos que convertir esas imgenes en vectores. Para ello, los formaremos como una simple secuencia de las filas de cada una de las imgenes, obteniendo as cuatro vectores de longitud 256 (16x16):
70

Captulo 4: DESARROLLO

Horizontal. Vertical. Diagonal primera. Diagonal segunda.

En la figura 4.36 se puede ver un ejemplo grfico del resultado de extraer las cuatro componentes a la imagen de una cifra binarizada.

original

horizontal

vertical

diagonal 1

diagonal 2

Figura 4.36

4.4.1.4. Inspeccin visual: una tcnica diferente

En este apartado explicaremos una tcnica nueva y completamente diferente a las anteriores. No es una tcnica de extraccin propiamente dicha, ya que no nos proporciona un vector de caractersticas. Lo que nos ndica es directamente la cifra ms probable. Es un mtodo de reconocimiento completo, en el que no podemos dividir los procesos de extraccin de caractersticas y de clasificacin. Los sistemas vistos anteriormente extraen una serie de caractersticas objetivas resultado de un complejo procesado de la imagen. Proyecciones, gradientes, etc. son rasgos identificativos de los patrones buscados, pero son poco intuitivos desde el punto de vista de un ser humano. El mtodo de inspeccin visual pretende imitar la actuacin de una persona a la hora de reconocer cada una de las cifras. Hagamos una prueba sencilla. Escribamos en un papel las cifras del 0 al 9 y plantemonos a nosotros mismos dos preguntas: Qu cifra es cada una? Por qu? La primera pregunta es muy sencilla e inmediata, pero la segunda quiz nos plantee algn problema. Tenemos tan interiorizada la forma de reconocer un nmero que es probable que nos resulte difcil responder. Sin embargo, si planteamos esa misma pregunta a nios de 4 aos, que estn aprendiendo a identificar los nmeros, resulta sorprendente la cantidad de cosas que responden y que nosotros sencillamente habramos pasado por alto. Lo que este sistema pretende es tratar de descubrir determinadas caractersticas geomtricas de las cifras que permiten identificarlas de forma univoca. El alfabeto de las cifras es relativamente corto e, independientemente del tipo de fuente a estudio, existen rasgos propios de cada cifra que la hacen nica frente a las dems. Veamos ahora una serie de ejemplos. 71

Captulo 4: DESARROLLO

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9
Figura 4.37

Tiene todo el contorno cerrado y no presenta ningn trazo a media altura (hueco).

Tiene un trazo vertical dominante y nunca tiene un trazo horizontal superior. Siempre tiene un hueco en la parte superior izquierda y en la parte inferior derecha. Siempre tiene un hueco en las partes superior e inferior izquierda.

Es el nico que, o bien est abierto en la parte superior, o se cierra formando un tringulo. Siempre tiene un hueco en la parte superior derecha y en la parte inferior izquierda. Siempre tiene un hueco en la parte superior derecha y est cerrada en la parte inferior. Independientemente del formato, siempre tiene un trazo horizontal superior y nunca inferior. Tiene todo el contorno cerrado y un trazo a media altura.

Siempre tiene un hueco en la parte inferior izquierda y est cerrada en la parte superior.

Es fcil ver que hay unos determinados rasgos presentes en cada cifra que resultan ms esclarecedores a la hora de identificarla que otros. El problema ahora es 72

Captulo 4: DESARROLLO

como implementar esta inspeccin. Una forma sencilla de hacerlo es utilizando las regiones que se muestran en la figura 4.38.

Figura 4.38

Utilizando esas regiones para inspeccionar la existencia de los huecos o trazos explicados en la figura 4.37 podemos averiguar de forma sencilla los rasgos definitorios de las cifras ms problemticas, proporcionando una forma de distinguir las cifras ms conflictivas en una imagen borrosa. La idea de este procedimiento no es proporcionar por si mismo un mtodo de reconocimiento, sino la de combinarlo con los mtodos de extraccin de vectores para aumentar la probabilidad de acierto. En el apartado dedicado a la decisin se explicar como se lleva a cabo esta conjuncin.

4.4.1.5. Tcnicas probadas y descartadas

En un primer momento se pens en utilizar como ayuda a la decisin el nmero de huecos. Sin embargo, fue descartado por dos razones principalmente. Por un lado, la variabilidad del tipo de fuente poda hacer que una misma cifra presentase diferente nmero de huecos. Este es el caso del nmero 4, que en ocasiones aparece abierto por su parte superior y en ocasiones cerrado formando un hueco. Por otra parte se da la circunstancia de que en algunos formatos, sobre todo en los de 7 segmentos, el trazo de las cifras no es continuo (ver figura 4.39). En estos casos el nmero de regiones conexas y de huecos no es representativo.

73

Captulo 4: DESARROLLO

Figura 4.39

Otro mtodo probado y descartado fue el de los momentos invariantes (ver Captulo de introduccin terica). Es un mtodo ampliamente utilizado en OCR ya que permite localizar formas que se ajusten exactamente a un patrn independientemente de su tamao o inclinacin. Sin embargo, este no era nuestro caso, ya que no podamos hacer coincidir las cifras buscadas con un patrn exacto por la variabilidad de los formatos de entrada. Tambin resulta ser, generalmente, un mtodo lento, aunque ese no es un inconveniente primordial en nuestra aplicacin. En la figura 4.40 se muestran algunos ejemplos de problemas derivados de la invarianza ante rotacin o ante simetra.

La invarianza ante rotacin hace imposible diferenciar cifras en algunos formatos.

La invarianza ante reflexin hace imposible diferenciar cifras en algunos formatos.

Figura 4.40

74

Captulo 4: DESARROLLO 4.4.2. CLASIFICACIN

Explicaremos en este apartado las tcnicas de decisin empleadas para clasificar los caracteres una vez extradas sus caractersticas. Nos centraremos en el decisor utilizado, explicando los motivos por los que se ha elegido frente a otras propuestas. El clasificador finalmente implementado es un clasificador 1-NN modificado. Se basa en la regla del vecino ms prximo, calculando la distancia del vector de caractersticas a cada uno de los vectores patrn. De entre ellas, tomaremos la menor y se clasificar el carcter como perteneciente a la misma clase a la que pertenezca el patrn ms prximo. Como vector de caractersticas se han utilizado los cuatro vectores de proyecciones y los cuatro vectores de gradientes de Kirsh unidos en un nico vector. Para el clculo de la distancia se recurre a la norma 1. Al ser las componentes de todos los vectores siempre positivas el resultado de la decisin va a ser el mismo que utilizando la distancia Eucldea, pero computacionalmente ms sencillo.
d (a, b ) = ai bi
i =1 n

Tambin se prob el funcionamiento con redes neuronales probabilsticas (PNN) pero, tras sucesivos ajustes de los parmetros, se pudo observar que se obtenan mejores resultados cuanto ms se aproximaba la red a un clasificador 1-NN (y nunca se llegaban a alcanzar los resultados de este), por lo que fue descartado. Esto se debe a las caractersticas de los propios patrones utilizados. El espectro de tipos de fuente de entrada es muy amplio, recorriendo desde caracteres de siete segmentos hasta complejas fuentes propias de un editor de texto. En este caso es frecuente que una cifra presente ms similitudes (menor distancia) con otra cifra que con la misma en otros formatos (ver figura 4.41). Al darse esta situacin, los valores medios calculados para los vectores de caractersticas de cada clase no son suficientemente representativos para todos los patrones de esta clase.

Carcter de entrada

Distancia = 4020

Distancia = 5407

Distancia = 5174

Distancia = 3962

Se muestran las distancias calculadas entre los vectores de caractersticas del carcter de entrada y algunos de los patrones. Podemos ver que est ms cerca de un patrn de otra clase distinta (2) que de los patrones de su misma clase (1)

Figura 4.41

75

Captulo 4: DESARROLLO

El mayor problema de los clasificadores 1-NN suele ser la carga computacional que suponle tener que recorrer todo el espacio de patrones, sin embargo esto no es un problema para el caso que nos ocupa por dos razones principales. En primer lugar, el alfabeto de utilizado es relativamente corto (solo se necesitan las cifras del 0 al 9 y algn signo1) por lo que la carga es menor que en los clasificadores alfanumricos. Por otro lado, la rapidez de respuesta no es crtica para nuestra aplicacin, en la que el tiempo que transcurre entre la solicitud de procesado de dos imgenes sucesivas es de varios ordenes de magnitud superior al propio tiempo de procesado. Esto es, frecuentemente transcurren varios segundos entre la toma de imgenes y en ningn momento se necesitan restricciones de tiempo real. Para combinar este mtodo con el explicado en el apartado anterior, al se le ha dado el nombre de inspeccin visual, se procede de la siguiente forma: Tras el proceso de extraccin de caractersticas y clculo de distancias segn el mtodo 1-NN, se lleva a cabo la inspeccin visual de la cifra a analizar. Este segundo mtodo analiza las caractersticas geomtricas del carcter, dando como resultado un vector de tantas componentes como cifras posibles y cuyos valores son 0 para las cifras incompatibles y 1 para las cifras que encajan con los rasgos principales analizados (explicados anteriormente). A las cifras ganadoras de este proceso (componentes a 1) se les reduce la distancia en un 20 % sobre las calculadas con el primer mtodo. De esta forma consigue diferenciar en los casos dudosos, en los que las distancias calculadas en el primer paso proporcionan valores muy prximos entre si y que no son aclaratorios. A modo de ejemplo, si tras el proceso de inspeccin visual resulta ganadora la cifra 2 (vector con esa componente a 1 y las dems a 0), las distancias a todos los patrones cuyo tipo se corresponde con la cifra 2 calculadas en el proceso anterior, se vern reducidas en un 20 %. En la figura 4.42 se muestra un diagrama de este proceso.

Por el momento solo se ha visto la necesidad de incluir el punto decimal, ., y el signo -, que aparece en caso de nmeros negativos. Sin embargo, de ser necesario, resulta sencillo aadir nuevos smbolos, como se explicar posteriormente.

76

Captulo 4: DESARROLLO

CIFRA

Extraccin de Caractersticas Inspeccin Visual Clculo de Distancias Vector de cifras

Vector de distancias

Reduccin del 20 % para distancias de cifras ganadoras

1-NN

RESULTADO Figura 4.42

77

Captulo 4: DESARROLLO

4.5. CRITERIOS EXTERNOS


Existe una serie de informacin del entorno que puede ser utilizada de forma posterior en la interpretacin de resultados. A continuacin explicaremos algunas de las consideraciones que el sistema tiene en cuenta a la hora de devolver un resultado.
4.5.1. Informacin proporcionada

En la fase de interaccin con el software de captura de imagen del que se hace uso, se ha decidido permitir la introduccin de una serie de parmetros relativos a la medicin que se va a efectuar y que pueden ser de utilidad a la hora de la interpretacin. De todas formas, se permite que el sistema funcione con la ayuda de estos parmetros o de forma independiente. En primer lugar, se permite al tcnico seleccionar el formato numrico de la pantalla de la que va a tomar imgenes. De esta forma podemos saber la posicin exacta del punto decimal y la cantidad de cifras a la izquierda y a la derecha. Para ello, se le da la opcin de escoger entre una serie de formatos tpicos como, por ejemplo, 00.00 o 00.0. Por supuesto, tambin tiene la opcin de dejar este campo en blanco, en cuyo caso no sera utilizado para la interpretacin. Esta informacin es especialmente til en aquellas pantallas en las que es complicado identificar el punto decimal. Esto se debe, frecuentemente a que aparece unido al carcter anterior por encontrarse muy prximos entre si. En esta situacin se suele producir una zona oscura entre ambos caracteres debida a la propia sombra de las cifras sobre el display o a un desajuste en el enfoque de la cmara. En la figura 4.43 se muestra un ejemplo de esta situacin.

En este caso las propias cifras producen una sombra sobre el fondo de pantalla que provoca la unin del punto decimal con las cifras laterales. Ante esta situacin, el sistema consigue segmentar las cifras correctamente, pero necesita la informacin externa para la situacin del punto decimal.

Figura 4.43

Otro parmetro que podemos utilizar es el punto de consigna de la medida. Cuando se van a efectuar las medidas para la calibracin de un instrumento se sabe de antemano bajo que condiciones va a medir. Estas condiciones conforman lo que es el punto de consigna. Veamos un ejemplo para entender el procedimiento.

78

Captulo 4: DESARROLLO

Si se quiere calibrar un termmetro en el punto de 20 C, podemos utilizar esta informacin a la hora de interpretar los resultados obtenidos. De esta forma si el resultado ledo se va fuera de un margen establecido se podra descartar por considerar un error en la lectura. En nuestro caso, se podra aceptar un valor de 21.3 C y descartar 51.3 C, por ejemplo. Esta informacin podra ser utilizada incluso a la hora de decidir las cifras. En el ejemplo anterior se le podran dar pesos distintos a la cifra de las decenas en funcin de la proximidad al punto de consigna marcado. Sin embargo, a peticin del LOMG no se ha utilizado esta informacin en la implementacin final. La causa es que el objetivo de las mediciones es ver el error que comete el propio aparato de medida, siendo necesario que se estime aunque se aleje considerablemente del punto de consigna. Por esta razn, el procedimiento seguido es el siguiente: Se permite la introduccin de los datos de punto de consigna y un determinado margen (en el que se espera que estn los resultados) en el proceso de configuracin del sistema. Si el valor interpretado, sin utilizar esta informacin, est dentro del margen se muestra en verde. Si el valor interpretado se sale del margen establecido, no se realiza ninguna correccin, pero se muestra un aviso (numero en rojo) para que al tcnico le resulte sencilla su localizacin y comprobacin manual con el verdadero valor presentado en la imagen.

4.5.2. Informacin general

Hay una serie de consideraciones a tener en cuenta en el nmero interpretado que dependen de la informacin mostrada en los instrumentos a los que el presente proyecto est destinado. Los datos a leer van a ser siempre numricos, normalmente compuestos por un punto decimal y una serie de cifras a la derecha y a la izquierda. De esta forma, resulta lgico llevar a cabo una serie de comprobaciones al resultado obtenido antes de devolverlo. Entre ellas, podemos destacar las siguientes: Comprobar la presencia de puntos decimales en los extremos izquierdo o derecho del nmero. Estos pueden aparecer debido a ruido, manchas, presencia de smbolos o trozos de smbolos como C, etc. En este caso se eliminan. Se tratar de evitar, en la medida de lo posible, la presencia de varios puntos decimales. Para ello, evitaremos las bsquedas forzadas de punto1 en el caso en que haya sido identificado de forma natural (como un carcter independiente).

En el apartado de segmentacin se describe un mtodo que trata de localizar la presencia de puntos decimales para el caso de cifras en cursiva. Este podra llevar a detectar falsos puntos en el caso de imgenes con un excesivo ruido que llegue a fragmentar cifras.

79

Captulo 4: DESARROLLO

4.6. SELECCIN DE PATRONES


En este apartado explicaremos las decisiones tomadas a la hora de seleccionar los patrones y la forma de implementarlos. Como norma general, en los sistemas de reconocimiento de caracteres suele ser recomendable el uso de patrones reales. Es decir, patrones sacados de imgenes obtenidas con el mismo sistema que va a ser utilizado para obtener las imgenes a interpretar por el reconocedor. Esto permite aproximar mejor las caractersticas que con patrones ficticios. Sin embargo, en el presente sistema se ha decidido utilizar patrones artificiales por varias razones. En primer lugar, los patrones reales funcionan especialmente bien cuando existe una correspondencia exacta entre el tipo patrn y el tipo a reconocer. Sin embargo, en nuestro caso estaramos cometiendo un error ya de partida, ya que el formato de los caracteres es diferente e independiente en cada uno de los instrumentos. Al seleccionar los patrones de un instrumento concreto y descartar los de otro estaramos influenciando las caractersticas de forma equivocada. A modo de ejemplo, tratemos el caso de los displays de siete segmentos, que es el tipo de caracteres ms numeroso. Dentro de estos nos encontramos con segmentos ms o menos gruesos, con distintos grados de inclinacin, con diferentes contornos para cada uno de los segmentos, etc. Una solucin poco prctica sera tratar de incluir todos los tipos posibles en la lista de patrones. Esto supondra una carga de tiempo y memoria inviable y, aun as, nunca tendramos la seguridad de incluir todas las posibilidades. El da de maana podra llegar un aparato con un formato de siete segmentos diferente. Por otro lado, al tratarse de pantallas relativamente pequeas, no resulta sencillo obtener imgenes con la suficiente calidad como para tomarlas como patrones. En general, la prdida de calidad en estos casos no puede ser despreciada. Por todo esto, se ha decidido seleccionar unos patrones artificiales y suficientemente genricos como para ser representativos de los instrumentos a interpretar. Para ello, se ha hecho uso de un procesador de texto con diferentes formatos numricos, entre ellos los de siete segmentos1, para obtener imgenes con una calidad suficiente de los distintos caracteres. Tambin se ha seleccionado algn formato complejo que, si bien se ha observado su coincidencia con algunos de los aparatos analizados, resulta bastante estndar para funcionar como base para otros formatos similares. ste es el que recibe la denominacin de arial en la mayora de procesadores de texto. En la figura 4.44 se muestra un ejemplo de algunos de los formatos incluidos en la carpeta patrones.

Esta es la fuente denominada DS-Digital. Normalmente no est incluida por defecto en los procesadores de texto, pero se puede descargar de forma gratuita de cualquier archivo de fuentes en la red.

80

Captulo 4: DESARROLLO

Ejemplos para el caso de la cifra 2 de algunos de los formatos patrn incluidos en el sistema inicial.

Figura 4.44

No podemos perder de vista que el sistema va a ser puesto en funcionamiento en un laboratorio. Para la seleccin de caracteres se ha procedido observar los instrumentos que han llegado al laboratorio durante el periodo de desarrollo. Tambin se ha consultado a los tcnicos sobre los tipos de pantallas mas habituales con el objetivo de ajustarse de la mejor forma posible a los instrumentos a leer. Sin embargo, en cualquier momento podra hacerse frecuente la llegada de aparatos con un formato numrico diferente y que no se ajuste a ninguno de los incluidos en la fase de diseo. Para que esta situacin no suponga un problema en el uso del sistema, se ha diseado de forma que resulte sencilla su actualizacin por parte del personal del laboratorio, que en ningn caso tiene que tener conocimientos sobre el software subyacente. El sistema es el siguiente: En el mismo directorio en el que se encuentra el archivo ejecutable se encuentra una carpeta con el nombre "patrones". Dentro de esta se encuentran las imgenes de cada uno de los caracteres que forman el conjunto de patrones. La forma de identificar estas imgenes con el carcter al que representan es darle un nombre cuya primera letra sea ese carcter. As, por ejemplo, todas las imgenes cuyo nombre empiece por '7' formarn el conjunto de patrones para la cifra 7. Si queremos aadir algn nuevo patrn a la lista, por los motivos expuestos anteriormente, no tenemos ms que introducir una imagen con el carcter en cuestin, recortado, dentro de la carpeta "patrones" y darle un nombre que empiece por ese carcter. En la prxima ejecucin del servidor de reconocimiento se incluirn de forma automtica y transparente para el usuario los nuevos caracteres. Adems se permite la introduccin por separado de cualquier carcter independientemente del resto del alfabeto. Es decir, si un nuevo formato numrico solo presenta diferencias en alguno de sus caracteres, coincidiendo los dems con alguno de los existentes, se puede introducir solamente el carcter conflictivo sin ningn problema. Una excepcin es el caso del '.', cuyo nombre empieza por la letra 'p', para evitar problemas con el sistema de nombres de ficheros. Esto no supone ningn conflicto, ya que no es objetivo de este sistema el reconocer letras.

81

Captulo 4: DESARROLLO

4.7. INTEGRACIN DEL SISTEMA


En este apartado explicaremos las decisiones adoptadas para llevar a cabo la integracin del sistema de reconocimiento objeto de este proyecto con el sistema encargado de la sincronizacin y captura de imgenes del que disponemos. La solucin implementada consiste en una interfaz de sockets con una estructura cliente-servidor. El motivo de esta decisin es doble y ser explicado a continuacin. La primera cuestin es la sencillez de integracin con el sistema existente. ste hace uso de bibliotecas externas, herramientas propias de Visual Studio para proporcionar un entorno grfico, bases de datos, etc. Todo ello se compila haciendo uso de las directivas que proporciona el propio entorno de Visual Studio 2005. Por otro lado, el presente proyecto hace uso de las bibliotecas de visin artificial VXL, por lo que es necesaria la herramienta CMake (explicada en el captulo dedicado a la herramientas utilizadas) para generar las instrucciones de compilacin. Ante esta situacin, resulta inviable modificar cualquiera de las dos partes para conseguir compilarlas de forma conjunta. Por otra parte, y como razn de peso definitiva para la decisin de utilizar una interfaz de sockets, se nos presentaba el siguiente problema. Los ordenadores disponibles en el laboratorio estn destinados a trabajos de poca carga computacional como es la introduccin de datos de las calibraciones y redaccin de informes. Por esta razn, aunque se dispone de algn ordenador ms potente, la mayora estn bastante limitados en cuanto a memoria y capacidad de procesamiento1. Dado que estos equipos se encuentran conectados en red, parece razonable poner en funcionamiento el sistema reconocedor en el equipo ms potente y que los ordenadores que ejecuten el programa de calibracin funcionen como clientes de este. Expuesta la problemtica existente, se ha considerado como la opcin ms adecuada la definicin de una interfaz cliente que se pueda incluir de forma sencilla en el programa existente y que interaccione con nuestro programa servidor. El proceso es el que se describe en la figura 4.45

Como es habitual, los equipos nuevos y ms prestacionales se destinan a los departamentos donde se les vaya a sacar un mayor rendimiento, mientras los ms antiguos se delegan a labores menos crticas. En esta situacin nos podemos encontrar con autnticos clsicos dignos de coleccionista.

82

Captulo 4: DESARROLLO

Figura 4.45

La estructura de los paquetes intercambiados es muy sencilla y se muestra a continuacin.

Trama de peticin TX: 2 bytes con los caracteres T y X. Longitud: Un entero de 4 bytes con la longitud de la foto a enviar. Punto de consigna: Un float de 4 bytes con el punto de consigna de la calibracin. Margen: Un flota de 4 bytes con el margen (superior o inferior) en el que debera mantenerse el nmero ledo. Formato: Una cadena de longitud variable en la que se indica el formato numrico de la pantalla a interpretar con un punto decimal y un nmero de ceros a la izquierda y a la derecha. Ej. 00.00

Trama de asentimiento OK: 2 bytes con los caracteres O y K.

Figura 4.46

83

Captulo 4: DESARROLLO

La trama con el resultado de la interpretacin es una cadena de longitud variable que representa los caracteres ledos en la pantalla. Los sockets utilizados son los proporcionados por la Winsock DLL de Windows para el protocolo TCP, siguiendo las recomendaciones que se pueden consultar en la ayuda de Visual Studio Professional 2005, y el puerto seleccionado para el servidor ha sido el 6666.

84

Captulo 5: PRUEBAS Y RESULTADOS

Captulo 5 PRUEBAS Y RESULTADOS

En este captulo explicaremos las pruebas aplicadas al sistema e interpretaremos los resultados obtenidos. No nos quedaremos en la mera presentacin de una tabla con unos resultados numricos, que frecuentemente son difciles de interpretar y no aportan demasiada informacin sobre el funcionamiento real del sistema y los problemas encontrados. En contraposicin, trataremos de abordar los casos ms destacables con imgenes, tratando de ofrecer un razonamiento sobre los resultados obtenidos. Para ello, diferenciaremos entre varios tipos de pruebas, cada una enfocada a un aspecto diferente del funcionamiento del sistema.

85

Captulo 5: PRUEBAS Y RESULTADOS

5.1 PRUEBA DE SECUENCIAS


El objetivo de este sistema de visin por computador es interpretar una serie de imgenes procedentes de un dispositivo que permanecer en una posicin fsica fija para observar la evolucin de los datos en su pantalla. Por esta razn es importante evaluar los porcentajes de acierto en secuencias de imgenes que proceden del mismo aparato y comparten unas mismas condiciones de tamao, iluminacin, etc. Estas son imgenes de dispositivos que, de partida, sabemos que pueden ser interpretadas por el sistema1, pero, an as, pueden producirse errores puntuales dentro de una misma secuencia. Consideraremos un resultado como acierto solo en el caso de que todas las cifras del nmero sean correctas, siendo contabilizado como fallo cualquier otro caso. A la hora de considerar los aciertos y fallos, solamente tendremos en cuenta las cifras significativas de los nmeros analizados. El caso de la deteccin del punto decimal no es relevante en este sentido, ya que en el caso de deteccin no directa, es obtenido a partir de la informacin de formato proporcionada por el usuario. Sin embargo, ms adelante dedicaremos un apartado a comentar los resultados obtenidos y los problemas encontrados en la deteccin del punto analizando ejemplos concretos de imgenes, tanto sencillas como problemticas. Tambin eliminaremos de estas secuencias aquellas imgenes en las que el nmero es captado por la cmara en proceso de cambio. La problemtica de estas transiciones ser abordada en un apartado posterior. La estructura que adoptaremos ser la siguiente: 1. En primer lugar presentaremos una serie de secuencias de imgenes para un determinado nmero de dispositivos distintos. Para cada una de ellas, mostraremos una imagen de ejemplo y comentaremos sus caractersticas. Se incluirn aqu tanto imgenes sencillas como casos de pantallas con condiciones que dificulten su lectura. Analizaremos el nmero total de imgenes, nmero de aciertos y nmero de fallos, as como los correspondientes porcentajes. 2. En segundo lugar ofreceremos unos resultados globales ponderados para esta situacin.

No debemos olvidar que, en la fase inicial de puesta en marcha del sistema, el usuario selecciona en la imagen la zona de inters y recibe al momento una interpretacin. Esto le permite comprobar que el sistema funciona correctamente para ese display o ajustar de nuevo la zona de inters si hubiese algn problema con la interpretacin.

86

Captulo 5: PRUEBAS Y RESULTADOS

Caso 1 Display de siete segmentos con manchas de burbujas en plstico protector

_____________________________________ Nmero de imgenes analizadas: 12 Nmero de aciertos: 12 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 2
Pantalla grfica condiciones. en buenas

_____________________________________ Nmero de imgenes analizadas: 17 Nmero de aciertos: 17 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 3
Pantalla grfica cercana (en la que se acentan las imperfecciones y rejilla de pxeles) con condiciones deficientes de iluminacin.

_____________________________________ Nmero de imgenes analizadas: 37 Nmero de aciertos: 37 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

87

Captulo 5: PRUEBAS Y RESULTADOS

Caso 4
Pantalla de siete segmentos inclinada con buenas condiciones de iluminacin.

_____________________________________ Nmero de imgenes analizadas: 28 Nmero de aciertos: 28 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 5 Pantalla de siete segmentos con sombra de los propios dgitos sobre el fondo de pantalla.

_____________________________________ Nmero de imgenes analizadas: 17 Nmero de aciertos: 17 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 6 Misma pantalla se siete borrosa (mal enfocada).

segmentos

_____________________________________ Nmero de imgenes analizadas: 19 Nmero de aciertos: 17 (89.4737 %) Nmero de fallos: 2 (10.5263 %) _____________________________________

88

Captulo 5: PRUEBAS Y RESULTADOS

Caso 7 Pantalla de siete segmentos inclinada con nmeros brillantes sobre fondo oscuro y anomalas de rayado. Detalle:

_____________________________________ Nmero de imgenes analizadas: 19 Nmero de aciertos: 18 (94.7368 %) Nmero de fallos: 1 (5.26316 %) _____________________________________

Caso 8 Misma pantalla que el caso anterior (con la misma anomala de rayado), en la que el formato cambia de forma automtica durante la serie de imgenes.

_____________________________________ Nmero de imgenes analizadas: 40 Nmero de aciertos: 39 (97.5 %) Nmero de fallos: 1 (2.5 %) _____________________________________

Caso 9 Otra pantalla de siete segmentos en buenas condiciones.

_____________________________________ Nmero de imgenes analizadas: 30 Nmero de aciertos: 29 (96.6667 %) Nmero de fallos: 1 (3.33333 %) _____________________________________

89

Captulo 5: PRUEBAS Y RESULTADOS Caso 10 Pantalla de siete segmentos con manchas, bajo contraste y una ligera inclinacin.

_____________________________________ Nmero de imgenes analizadas: 20 Nmero de aciertos: 20 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 11 Misma pantalla de siete segmentos que el caso anterior, ahora con una deformacin debida a al ngulo de incidencia.

_____________________________________ Nmero de imgenes analizadas: 12 Nmero de aciertos: 12 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 12 Pantalla grfica, altamente pixelada, con un desajuste de enfoque a la derecha debido a un ngulo de incidencia oblicuo. _____________________________________ Nmero de imgenes analizadas: 59 Nmero de aciertos: 56 (94.9153 %) Nmero de fallos: 3 (5.08475 %) _____________________________________

90

Captulo 5: PRUEBAS Y RESULTADOS Caso 13 Pantalla de siete numerosas manchas.

segmentos

con

_____________________________________ Nmero de imgenes analizadas: 30 Nmero de aciertos: 30 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 14 Pantalla grfica con bajo contraste.

_____________________________________ Nmero de imgenes analizadas: 28 Nmero de aciertos: 28 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Caso 15 Pantalla grfica con influencia de rejilla de pxeles. Detalle:

_____________________________________ Nmero de imgenes analizadas: 23 Nmero de aciertos: 21 (91.3043 %) Nmero de fallos: 2 (8.69565 %) _____________________________________

91

Captulo 5: PRUEBAS Y RESULTADOS Caso 16 Pantalla grfica.

_____________________________________ Nmero de imgenes analizadas: 58 Nmero de aciertos: 58 (100 %) Nmero de fallos: 0 (0 %) _____________________________________

Resultados globales Nmero total de imgenes analizadas: Nmero total de fallos: Nmero total de aciertos: 449 10 (2.227 %) 439 (97.773 %)

5.2. PRUEBAS SIMPLES


En este apartado analizaremos los resultados de realizar pruebas individuales a diferentes pantallas. En este caso no disponemos de una secuencia completa para analizar el comportamiento global, pero podemos utilizarlas como orientacin ante el tipo de pantallas que el sistema es capaz de interpretar y cules resultan problemticas. Hemos decidido eliminar de este apartado aquellas pantallas con formatos similares a los ya presentados en las pruebas de secuencias, centrndonos solamente en aquellos instrumentos que presentan unas caractersticas numricas diferentes de las habituales. Tambin se presentarn algunas imgenes con unas condiciones poco favorables para su interpretacin con el objetivo de ver cual es el comportamiento del sistema ante situaciones no deseables. El procedimiento a seguir ser el siguiente: se mostrar la imagen a interpretar y se indicar si el sistema la reconoce con xito o no. Para facilitar la interpretacin, tambin se mostrar la imagen resultante del proceso de binarizacin. En caso de fallo, se analizar el motivo y, en la medida de lo posible, se plantear una posible solucin que ser analizada en el captulo dedicado a lneas futuras. En este caso, no presentaremos una tabla con los resultados de fallos y aciertos, ya que no resulta representativa, sino que el anlisis ser ms cualitativo. Debemos tener en cuenta que la mayora de los displays probados en esta seccin no forman parte del conjunto de instrumentos a los que el presente reconocedor

92

Captulo 5: PRUEBAS Y RESULTADOS est enfocado. Sin embargo, nos pueden dar una idea de su versatilidad y capacidad de adaptacin a otras posibles aplicaciones. De nuevo, al igual que en la seccin anterior, no ser tenida en cuenta la deteccin del punto decimal, cuyo anlisis se deja para la siguiente seccin. Consideraremos como aciertos solo los casos en los que todas las cifras sean identificadas correctamente, siendo catalogado como fallo cualquier otro caso.

Imagen original

Imagen binarizada

Nmero interpretado correctamente: 20.04 El aspecto ms importante aqu es la presencia de ms de dos intensidades dominantes (los segmentos apagados de las cifras destacan sobre el fondo).

Nmero interpretado correctamente: 22.9 En este caso, vemos que el sistema se muestra robusto frente a sombras y reflejos en la pantalla.

Nmero interpretado correctamente: 22.0 La dificultad de esta imagen reside en las machas debidas a un plstico protector despegado.

Nmero interpretado correctamente: 23.02 En este caso la imagen es mostrada en un monitor del tipo CRT.

Nmero interpretado incorrectamente: 5.5-7.5.5 El nmero interpretado en este caso carece de sentido. Al presentar una pantalla tan pixelada, no se efecta la segmentacin correctamente (dividiendo las cifras en varios trozos). Por otra parte, el formato numrico con el 0 barrado no haba sido considerado en el alfabeto de patrones, por lo que no se interpreta de forma correcta.

93

Captulo 5: PRUEBAS Y RESULTADOS

Nmero interpretado correctamente: 23.5 En este caso nos encontramos con una pantalla fuertemente daada, lo que implica nmeros borrosos.

Nmero interpretado correctamente: 45.678 Nmero sacado de una pantalla tipo LCD con un formato numrico de fuente escrita.

Nmero interpretado correctamente: 60.0 Display de siete segmentos amarillo, desenfocado.

Nmero interpretado incorrectamente: 12.3 El problema para interpretar esta pantalla es debido a su poca definicin. Las lneas que forman los trazos de las cifras solo tienen un nico pxel de grosor y, tras la binarizacin, se forman regiones aisladas que dan lugar a una mala segmentacin.

Nmero interpretado correctamente: 0.01 El problema del brillo en la esquina superior derecha es solucionado mediante la tcnica de binarizacin con umbrales mltiples.

Nmero interpretado incorrectamente: 277.8 El punto que aparece en la parte superior no forma parte del nmero a interpretar, sino que se corresponde con una indicacin externa del dispositivo (en este caso concreto indica si la medicin se efecta en grados centgrados o Fahrenheit). Dado que en nuestro sistema no se contaba con la presencia de ese smbolo es interpretado como si fuera una cifra ms, en este caso, un 7. Una posible solucin a este problema se presentar en el captulo dedicado a lneas futuras.

94

Captulo 5: PRUEBAS Y RESULTADOS

Nmero interpretado correctamente: 333.35 Display de siete segmentos en rojo (ver ejemplo siguiente).

Nmero interpretado incorrectamente: 337.39 Se muestra en este caso el mismo display que en el caso anterior, pero ahora se ha tomado la imagen sin cuidar la iluminacin. Los reflejos producidos, junto con la suciedad y rayas de la pantalla (que se agudizan debido a la luz) impiden la correcta interpretacin.

Nmero interpretado incorrectamente: 301.2 Demasiada iluminacin satura la el CCD de la cmara, dando lugar a nmeros borrosos. En estos casos es recomendable reducir la apertura en la lente.

Nmero interpretado correctamente: 123 La presencia de esta imagen aqu es una pura ancdota (a nosotros tambin nos sorprendi su correcta interpretacin).

5.3. DETECCIN DEL PUNTO DECIMAL


Aunque ste no es un problema crtico, dedicaremos esta seccin a analizar el caso de la deteccin del punto decimal. El mayor problema ante el que nos encontramos es la variedad de formatos numricos ante los que nos podemos encontrar: Hay equipos en los que el punto decimal se encuentra en la parte inferior entre dos cifras, aumentando la separacin entre estas; en otros se encuentra en la misma posicin, pero se mantiene la distancia entre cifras, con lo que el punto aparece muy prximo a stas (llegando a estar pegado en algunos casos). En otras pantallas, el punto aparece por debajo de las cifras decimales o a mitad de altura, en algunos casos, el punto deja de ser punto y es una coma u otro smbolo extrao, etc. A esta problemtica hay que sumar la complicacin aadida que aparece cuando trabajamos con imgenes borrosas o con un mal enfoque. En estos casos, el punto, que ya de por s aparece siempre ms prximo a las cifras que stas entre s, acaba unindose a la parte inferior de la cifra contigua, haciendo imposible su separacin. 95

Captulo 5: PRUEBAS Y RESULTADOS

A continuacin mostraremos algunos ejemplos de casos en los que se complica la deteccin del punto decimal.

Ejemplo 1

La sombra producida por las cifras sobre el fondo de pantalla, junto con un desajuste en el enfoque hace que aparezcan unidos cifras y punto decimal en la imagen binarizada. El segmentador consigue separar correctamente las cifras y proporciona una buena interpretacin, pero es necesario hacer uso de la informacin externa sobre el formato numrico para situar el punto decimal.

Ejemplo 2

En este caso, a la proximidad entre el punto decimal y la cifra de la izquierda, se suma la presencia de machas claras en el entorno de este. La influencia de estas en el histograma local de esa zona hace que el umbral calculado para la binarizacin se desplace hacia posiciones mas elevadas (ms claro), provocando la unin entre la cifra y el punto decimal. De nuevo, en esta situacin se soluciona con el uso de la informacin de formato.

Ejemplo 3

En este ejemplo, vemos como la inclinacin de la cifra hace imposible separarla del punto decimal mediante la proyeccin. Sin embargo, este es localizado con xito mediante la tcnica de bsqueda desarrollada para estos casos y explicada en el captulo dedicado al desarrollo del proyecto. En esta situacin no es necesario hacer uso de la informacin de formato para la localizacin.

96

Captulo 5: PRUEBAS Y RESULTADOS

5.4. PROBLEMTICA DE LAS TRANSICIONES


La elevada precisin de algunos de los aparatos hace que sean sensibles a cambios mnimos en las magnitudes a medir. Si a esto se suma la lentitud de algunas de las pantallas, da lugar a imgenes como las siguientes:

Nmero interpretado: 27.16

Nmero interpretado: 35.28

Nmero interpretado: 30.3

Nmero interpretado: -0-027

Figura 5.1

En la figura 5.1 se muestran las imgenes junto con los resultados interpretados por el sistema. Estas imgenes fueron capturadas en un periodo de transicin de la pantalla entre dos nmeros diferentes. En estos casos, ni siquiera un supervisor humano sera capaz de interpretar el nmero presente en la pantalla. Aunque este problema pueda parecer alarmante, durante el uso habitual del sistema no ser frecuente. En el propio procedimiento de calibracin se incluye el esperar a que el conjunto formado por el medio y el instrumento a calibrar permanezcan estables. Por esta razn, el impacto de estos casos ser mnimo, pero an as sera conveniente que fueran tratados. En el captulo dedicado a lneas futuras retomaremos de nuevo este tema.

5.5. CONSIDERACIONES FINALES


Existen una serie de consideraciones generales que es necesario tener en cuenta a la hora de interpretar los resultados obtenidos. En las pruebas realizadas y presentadas en el presente captulo, para ofrecer una visin ms general sobre los diferentes casos posibles y aplicaciones de este sistema, hemos tratado de mostrar ejemplos de lo ms variado en cuanto a las pantallas presentadas. Por ello, hemos considerado por igual los aparatos que ms frecuentemente son calibrados en el laboratorio y los casos especiales y poco habituales mostrados en esta documentacin. 97

Captulo 5: PRUEBAS Y RESULTADOS

Sin embargo, la realidad del trabajo diario en el laboratorio de calibracin es un poco distinta y, a la vez, ms favorable para el sistema reconocedor. A pesar de la gran variedad de formatos numricos con los que nos podemos encontrar, aproximadamente el 70 % de los instrumentos (termmetros y termohigrmetros) presentan un display tpico de siete segmentos. A la vista de los resultados obtenidos, en caso de disponer de pantallas en buen estado y unas imgenes con unas condiciones razonables de iluminacin, inclinacin, enfoque, etc. no debera de haber problemas para llevar a cabo su interpretacin. De este modo, si a la hora de calcular los porcentajes de xito de nuestro reconocedor tuvisemos en cuenta las diferentes probabilidades de ocurrencia de los distintos tipos de pantallas, el recuento de aciertos sera mayor.

98

Captulo 6: CONCLUSIONES

Captulo 6 CONCLUSIONES

En un entorno de trabajo cada vez ms competitivo, resulta de vital importancia agilizar los procesos para evitar retrasos, disminuir tiempos de espera y, en definitiva, aumentar la calidad de los productos y servicios ofertados. Para lograr este objetivo, es necesario evitar que personal cualificado realice tareas repetitivas y poco especializadas que le retrasen en sus labores principales. Por ello, la automatizacin de estas tareas es necesaria para conseguir el aumento de calidad demandado. Las tcnicas de visin artificial son una herramienta fundamental en los procesos de automatizacin, inspeccin y supervisin industrial. En el caso que nos ocupa, liberar al tcnico de laboratorio de las tareas de anotacin e interpretacin manual de los resultados de las mediciones, le permite centrarse en los trabajos que requieren un conocimiento y dedicacin especfico. No se trata solo del tiempo que se pierde en llevar a cabo las anotaciones, sino de su necesidad de atencin, en tiempo real estricto, en el momento preciso en que se den las condiciones adecuadas para la medicin, impidiendo as la realizacin de cualquier trabajo simultaneo que no permita espera. Eliminando esta problemtica se consigue aumentar considerablemente el rendimiento del laboratorio.

99

Captulo 6: CONCLUSIONES

Como se ha remarcado continuamente a lo largo de esta documentacin, no se pueden perder nunca de vista las necesidades que se pretenden solucionar con el proyecto, el uso que se le va a dar y sus usuarios finales. Este aspecto supone una gran diferencia frente a proyectos puramente acadmicos o tericos, en los que quiz exista ms libertad en la toma de decisiones, mientras que la necesidad de dar aplicacin a los resultados obtenidos marca enormemente las decisiones adoptadas. En este sentido, se revela como un factor fundamental el dilogo e interaccin constate con las personas que van a usar la aplicacin. Tener siempre en el punto de mira las necesidades reales y las aportaciones que pueden hacer los usuarios en el sistema, facilitar el diseo y evitar prdidas de tiempo en desarrollos innecesarios que no aporten verdadero valor a la aplicacin. En definitiva, ajustarse en la medida de lo posible, a lo que el destinatario espera del sistema aumentar su valor de forma ms evidente que las prestaciones ms sofisticadas, pero que no aporten utilidad real. Los resultados obtenidos son muy satisfactorios, no solo por la adecuacin a la solucin de los problemas planteados, sino tambin por la versatilidad alcanzada. Esta permite intuir numerosas aplicaciones de utilidad real en el campo de la lectura y supervisin automtica de cualquier dispositivo que presente un valor numrico correspondiente a la medida de una magnitud fsica. Tras esta reflexin general, podemos extraer una serie de conclusiones ms especficas a partir de los resultados de las pruebas realizadas. Nos centraremos, a continuacin, en algunos aspectos relacionados con el funcionamiento observado del sistema. Es importante destacar en este apartado los beneficios de trabajar con unas buenas imgenes. Con esto nos referimos a unas buenas condiciones de iluminacin, posicionamiento (evitando ngulos de inclinacin excesivos o deformaciones debidas al ngulo de incidencia), enfoque, etc. Hemos visto en los ejemplos analizados como ante una misma pantalla, variando las condiciones de obtencin de la imagen, se puede pasar de ser imposible su interpretacin a no presentar ningn problema. Por esta razn ser de vital importancia proporcionar a los tcnicos que vayan a hacer uso del programa una gua con la informacin precisa para la correcta obtencin de las imgenes (ver apndice (A)). Otro aspecto de inters es que, en un principio, se pens que el mayor problema que se iba a presentar al afrontar este proyecto iba a ser la multitud de formatos numricos posibles. Sin embargo, se ha observado que el reconocedor se comporta de forma correcta en la mayora de los casos en los que se enfrenta a fuentes desconocidas. Esto se debe a que, a pesar de que varen los tipos, el alfabeto de las cifras es relativamente corto y los rasgos caractersticos y diferenciadores entre smbolos suelen mantener una lnea de cohesin entre s. Por el contrario, los problemas suelen venir de la etapa de binarizacin y segmentacin, cuando la pantalla presenta texturas extraas. Con esto, nos referimos a displays, como algunos de los mostrados en el captulo de pruebas, en los que la rejilla de los pxeles se hace muy marcada, perdiendo

100

Captulo 6: CONCLUSIONES

uniformidad. Ante estas condiciones se puede producir una incorrecta segmentacin de los caracteres1. Una forma sencilla de evitar problemas con este tipo de pantallas consiste en lo siguiente: si disponemos de espacio suficiente para colocar la cmara sin interferir en el trabajo del laboratorio, podemos tratar de situarla lo ms alejada posible de nuestro objetivo. De esta forma, lo que estamos haciendo, en cierta medida, es un filtrado en la propia captura de la imagen, disminuyendo la influencia de las imperfecciones y textura rugosa de la pantalla. En caso de no disponer de espacio, se puede conseguir un efecto parecido desenfocando ligeramente la imagen. Claro est que, en la mayora de los casos, el mejor funcionamiento se consigue con imgenes cercanas y bien enfocadas, por lo que este procedimiento solo debe realizarse en situaciones con pantallas atpicas en las que se detecte que pueda haber problemas de este tipo. Tambin resulta destacable que, tras observar el funcionamiento del mtodo de inspeccin visual en conjuncin con los mtodos de extraccin de caractersticas y clasificacin, se ha revelado como una gran ventaja. Hemos decidido ser muy conservadores en su utilizacin, dndole un peso relativamente bajo en el conjunto final de la decisin de forma que funcione como una ayuda a la diferenciacin entre caracteres dudosos. Sin embargo, siendo inicialmente un mtodo probado sin demasiadas expectativas, ha resultado ser una herramienta muy potente, que ofrece resultados interesantes, incluso de forma independiente, y que merece seguir siendo mejorada.

A este respecto, se recomienda leer el captulo de lneas futuras, fuertemente ligado a este de conclusiones, y en el que se tratan algunas de las lneas de trabajo que permitirn solucionar las limitaciones encontradas.

101

Captulo 6: CONCLUSIONES

102

Captulo 7: LNEAS FUTURAS

Captulo 7 LNEAS FUTURAS

Uno de los aspectos ms satisfactorios que nos hemos encontrado a la hora de realizar este proyecto, es la cantidad de modificaciones, ampliaciones y nuevas aplicaciones que admite. Su realizacin deja gran variedad de lneas abiertas en las que mejorar su funcionamiento, aadir nuevas funcionalidades o realizar modificaciones y estudios que permitan su adaptacin a nuevos campos. A veces puede llegar a resultar difcil, en proyectos de este tipo, saber donde parar una vez alcanzados los objetivos, ya que la adicin de mejoras puede ser constante. Por ello, a continuacin trataremos de presentar y justificar algunas de las mltiples lneas futuras, algunas de las cuales estn siendo ya exploradas en el momento de escritura de esta documentacin. Cuando se toman los datos de entrada para una calibracin en el software de captura de imagen, se selecciona en un rectngulo la zona de inters con el nmero a interpretar. Como, adems, el dispositivo va a permanecer inmvil durante todo el proceso de calibracin, no se hace necesario utilizar tcnicas de localizacin de la zona de caracteres, que es recortada por el usuario. Sin embargo, podra resultar interesante buscar alternativas para realizar esta localizacin de forma automtica. Nos surge entonces una pregunta, para qu necesitamos la localizacin automtica si al tcnico no le supone ningn esfuerzo la seleccin manual en la configuracin inicial? La respuesta es que, en la mayora de los casos, no sera necesaria (prueba de ello es que el sistema 103

Captulo 7: LNEAS FUTURAS

funciona correctamente). Sin embargo, recortar a mano no es el procedimiento ms preciso y, a veces, puede incurrirse en situaciones no recomendables (ver gua de obtencin de imgenes en el apndice (A)) que dificulten el reconocimiento. Para alcanzar este objetivo, adems de las tcnicas habituales y presentes en la bibliografa, presentamos a continuacin una posibilidad adaptada a nuestro caso concreto. En esta aplicacin, disponemos de una secuencia de imgenes. Adems, estas permanecen estticas, a excepcin de las cifras a interpretar, que varan de una medicin a otra. Pues bien, si en lugar de procesar cada imagen por separado utilizamos toda la secuencia disponible, parece sencillo realizar operaciones de comparacin entre las imgenes (sumas y restas) para localizar las zonas de variacin, que se corresponden con la zona de inters. Desgraciadamente, la situacin no es tan fcil, ya que existen otros factores que contribuyen a aumentar la diferencia entre imgenes, como cambios en la iluminacin global o en los focos y orientacin de sta1. As y todo, esta lnea de trabajo se muestra como muy prometedora. Otra lnea de trabajo interesante es la utilizacin de la colorimetra en la fase de preprocesado. Como se sugiri en el captulo dedicado al desarrollo, una correcta ponderacin de los colores en la conversin de las imgenes RGB a escala de gris mejora el contraste y la diferenciacin entre los distintos tonos. Llevado a casos extremos, puede marcar la diferencia entre poder diferenciar entre dos tonos de color o que ambos produzcan la misma intensidad en la escala de grises, perdindose as informacin que puede ser relevante. Sin embargo, si lo enfocamos desde otro punto de vista, a veces hay cierta informacin que puede ser interesante perder. A continuacin, mostraremos un ejemplo. Un problema que se da frecuentemente en las imgenes a interpretar es la presencia de sombras en la pantalla, debidas a demasiada proximidad entre los nmeros y los salientes de la carcasa, iluminacin con focos justo encima del aparato, etc. Esto da lugar a diferencias en la escala de grises entre las zonas iluminadas y de sombra que, de ser posible, sera de gran utilidad eliminar. Pues bien, qu papel puede jugar aqu la colorimetra? Para poder responder a esto, falta exponer un ltimo factor en la ecuacin. Curiosamente, la gran mayora de los displays de los instrumentos analizados presentan un tono de color verde en su pantalla, otros son azules o rojos, etc. Es decir, generalmente existe un color claramente dominante en su pantalla. Dicho esto, podramos utilizar esta caracterstica para eliminar la influencia de manchas o sombras en la pantalla. Es decir, jugando con los pesos asignados a cada una de las componentes de color en la conversin, se puede hacer que las partes que nos interese igualar se aproximen entre si y las partes que nos interese destacar aumenten su diferenciacin. Claro est que, para poder llevar a cabo este procedimiento con unos resultados exitosos, es necesario un estudio minucioso de cmo aplicarlo a cada situacin y qu resulta lo ms efectivo en cada tipo de pantalla (con un determinado color, textura, etc.)

Una luz que se enciende o se apaga, una sombra de algo o alguien que asa cerca, la propia variacin de la luz a lo largo del da, etc.

104

Captulo 7: LNEAS FUTURAS

A modo de curiosidad mostramos en la figura 7.1 el efecto de binarizar una imagen en color tras pasarla a escala de grises teniendo en cuenta solo una de sus componentes de color.

Imagen original

Escala de grises usando las tres componentes

Imagen binaria usando las tres componentes

Escala de grises usando solamente el rojo

Imagen binaria de la componente roja

Escala de grises usando solamente el verde

Imagen binaria de la componente verde

Escala de grises usando solamente el azul

Imagen binaria de la componente azul

Figura 7.1

105

Captulo 7: LNEAS FUTURAS

El problema que se presenta a continuacin ya fue introducido en el captulo de pruebas. Se ha observado la existencia de algunos instrumentos que presentan cierta informacin complementaria al valor de la medicin realizada y que aparece, literalmente, en medio de los nmeros. Un ejemplo de ello se muestra en la figura 7.2, en la que el punto que se sita entre el 2 y el 7 proporciona informacin sobre la escala de temperatura utilizada (C o Fahrenheit).

Figura 7.2

Una herramienta que sera de gran utilidad para el funcionamiento del sistema en estos casos sera que el usuario, en la fase inicial de introduccin de parmetros, pudiese marcar determinadas regiones a eliminar de la zona de inters. Una forma sencilla sera permitirle marcar con un rectngulo la zona a eliminar y sustituir esos pxeles con el valor medio de los puntos que forman el borde del rectngulo marcado1. Adems, con este sistema tambin se permitira eliminar manchas debidas a daos en la pantalla del aparato (siempre que no estn sobre los trazos de una cifra).

Zona a eliminar seleccionada

Imagen resultante

Figura 7.3

Esta es una mera propuesta a modo de ejemplo. Seguramente se podran estudiar soluciones mejores para rellenar la regin marcada.

106

Captulo 7: LNEAS FUTURAS

Otro problema, ya introducido tambin en el captulo de pruebas, es el caso en que las imgenes tomadas se corresponden con un proceso de transicin entre dos nmeros en la pantalla. Actualmente, el sistema no es capaz de reconocer esta situacin, con lo que trata de interpretarla igualmente, proporcionando un resultado ficticio1. Ser objeto de estudio el tratar de buscar un mtodo consistente para poder rechazar estos casos, en los que tampoco un observador humano podra decidir (ver figura 7.4).

Cules son las dos cifras decimales? Podemos razonar que una est entre un 7 y un 5 y la otra entre un 0 y un 3. Sin embargo, si vamos ms all, a lo que ms se parecen ambas es a un 8

Figura 7.4

Alguna posible aproximacin a una solucin sera fijar el tipo de fuente en los parmetros de entrada. De esta forma, tomando como ejemplo la figura 7.4, si la cifra se determina como un 8, pero no se corresponde con el tipo definido, se descarta. Sin embargo, se plantean aqu otros muchos problemas: es posible definir tipos que abarquen todas las posibilidades? Si no es as, cmo decidir a cual corresponde una entrada determinada? No estamos limitando realmente todo el funcionamiento del sistema al fijar la entrada?, etc. Otra posibilidad podra ser descartar las cifras dudosas. Otra lnea de trabajo, tambin adelantada en el captulo de pruebas, es el tratar aquellos tipos de pantallas grficas de baja resolucin, que presentan una separacin entre pxeles del mismo orden de magnitud que su dimetro. En estros casos, el aspecto de rejilla del display, llevaba a fallos (comentados anteriormente) en la segmentacin de caracteres.

Figura 7.5

Cualquier resultado interpretado sera errneo, ya que estaramos decidiendo un valor cuando en realidad no hay forma de saber cual es (en ese momento, el instrumento no est proporcionando una medicin vlida).

107

Captulo 7: LNEAS FUTURAS

Una posible solucin a este problema se podra abordar mediante la utilizacin de operaciones de morfologa matemtica (opening y closing) sobre la imagen binarizada para conseguir que los puntos de los caracteres se unan formando trazos. El problema es que, con este procedimiento, probablemente causaramos problemas en las imgenes en las que no se da esta condicin. Para tratar de evitarlo, se puede dar al usuario del programa la opcin de realizar o no esta operacin en la fase inicial de configuracin del sistema. Hasta ahora, hemos tratado en todo momento lneas futuras que tratan de resolver problemas concretos e identificados en el sistema, siendo todas ellas soluciones que han sido previamente analizadas. A continuacin sern propuestas una serie de lneas ms generales y que no tratan de modificar ni mejorar el comportamiento del sistema ante determinadas situaciones, sino ampliar sus funcionalidades. Aqu no nos detendremos a dar una explicacin, sino ms bien una enumeracin de posibles lneas de trabajo que continen este proyecto. En este sentido, una lnea pendiente es el reconocimiento de medidores analgicos de agujas. Aunque son minoritarios frente a los aparatos que presentan un display digital, puede ser interesante desarrollar un sistema capaz de reconocer estos dispositivos. Claro est que el tratamiento, en cuanto al sistema de visin artificial, sera completamente diferente al que se aborda en este proyecto. Por otra parte, tambin resultara de utilidad llevar a cabo un estudio detallado de los tipos de pantallas que presentan los instrumentos de medida que ms frecuente llegan al laboratorio de calibracin. Se deberan analizar caractersticas fsicas de pantalla como dimensiones, color, iluminacin interna y otras como formato numrico, tipo de fuente, autoapagado, etc. As como las tendencias y expectativas de futuro. Tampoco debemos limitarnos a los termmetros y termohigrmetros, que son el objetivo de este proyecto, sino que deberan ser abordados todo tipo de instrumentos que presente una pantalla digital sobre la que realizar lecturas. Esta informacin conformara una base de datos de gran valor y utilidad a la hora de decidir qu rumbo tomar para las mejoras y lneas de trabajo en el campo de la lectura automtica de instrumentos de medida.

108

Apndice A: GUA RPIDA DE OBTENCIN DE IMGENES

Apndice (A) GUA RPIDA DE OBTENCIN DE IMGENES

La captura de las imgenes es la parte ms importante en cualquier sistema de visin artificial. Si la imagen es buena, se le facilitar el trabajo al sistema reconocedor, mientras que si la imagen es mala, por potente que sea el sistema, ser imposible su reconocimiento. Por imagen buena, entendemos aquella en la que un supervisor humano puede interpretar el resultado a simple vista, sin realizar un esfuerzo excesivo. A continuacin se describe el procedimiento bsico para la obtencin de imgenes que puedan ser interpretadas correctamente por el sistema reconocedor. Seguir estos pasos sencillos contribuir a disminuir la presencia de fallos.

109

Apndice A: GUA RPIDA DE OBTENCIN DE IMGENES

Con el objetivo de que interfiera lo menos posible en el trabajo en el laboratorio trataremos de minimizar la distancia entre la cmara y el dispositivo a fotografiar. Ambos dispositivos deben estar colocados lo ms firmemente posible, de forma que se evite cualquier desplazamiento durante el tiempo que dure todo el proceso de captura de imgenes. En el caso de la cmara, hay que tener especial cuidado en el ajuste del trpode. La pantalla del instrumento a medir y la cmara deben estar enfrentadas de forma lo ms perpendicular posible, evitando las situaciones descritas en la figura.

Colocacin incorrecta

Colocacin correcta

Tambin es recomendable mantener el nmero lo ms horizontal posible en la imagen capturada, evitando ngulos de inclinacin elevados.

Imagen correcta

Imagen incorrecta

Se debe ajustar el enfoque de la cmara hasta conseguir una imagen lo ms ntida posible, consiguiendo que los bordes de los trazos de las cifras estn bien definidos.

Mal

Aceptable

Bien

110

Apndice A: GUA RPIDA DE OBTENCIN DE IMGENES

Se debe ajustar la luz admitida por la cmara de forma que no sature la imagen. Por norma general, en los displays autoiluminados (como, por ejemplo, los de LEDs rojos) deberemos disminuir la apertura y en los displays sin iluminacin deberemos aumentarla. Se debe procurar evitar reflejos y sombras sobre los nmeros a leer. Hay que tener especial cuidado con la sombra que produce el borde de la pantalla cuando el instrumento se encuentra debajo de una fuente de luz.

Cuidado con esto.

Para seleccionar la zona de inters, se debe ajustar el recuadro a los nmeros a leer, evitando espacios grandes (de tamao comparable al de una cifra) en los bordes, pero sin llegar a cortar las cifras.

Bien

Mal: demasiado espacio a la izq. del nmero

Mal: se cortan los bordes

En caso de no poder cumplir alguna de las condiciones anteriores, es recomendable usar el sentido comn... qu te ayudara a ti, como observador humano, a ver mejor el nmero en la imagen?, aumentar la luz? disminuir la inclinacin?, evitar esa sombra en la esquina?, etc. Tras la seleccin de la zona de inters, se debe comprobar el nmero interpretado. Si es correcto, se puede seguir adelante. Si es falso, se debe probar a seleccionar de nuevo. Si persiste el fallo, se deben revisar los pasos anteriores (colocacin, enfoque, iluminacin, etc.)

111

Apndice A: GUA RPIDA DE OBTENCIN DE IMGENES

112

Apndice B: INSTRUCCIONES DE COMPILACIN

Apndice (B) INSTRUCCIONES DE COMPILACIN

Describiremos a continuacin, las herramientas necesarias y los procedimientos a seguir para la correcta compilacin y ejecucin del proyecto en el entorno de un sistema operativo Windows.
Herramientas necesarias

Para poder utilizar este sistema sern necesarios una serie de requisitos previos. Esto es, contar con una serie de herramientas software para su correcta compilacin. Entorno de desarrollo y compilador Visual Studio Professional 2005 de Microsoft. Herramienta CMake. Podemos obtener la ltima versin a travs de la pgina web www.cmake.org. Aunque tambin est disponible el cdigo fuente, el que a nosotros nos ineresar ser el archivo ejecutables (.exe) para entornos Windows. El desarrollo de este proyecto se ha llevado a cabo con la versin 2.4.7 de CMake.

113

Apndice B: INSTRUCCIONES DE COMPILACIN

Libreras VXL. Estas bibliotecas pueden ser obtenidas a travs de la web http://vxl.sourceforge.net/ en donde est disponible la ltima versin. Para el desarrollo de este proyecto se ha hecho uso de la versin 1.9.0 de VXL.

Instalacin de las herramientas

Obviaremos aqu el proceso de instalacin del entorno Visual Studio Professional 2005, ya que es un proceso sumamente sencillo y el instalador proporcionado con la distribucin indica todos los pasos de forma interactiva. Tampoco supondr ninguna complicacin la instalacin de la herramienta CMake. Algo ms de atencin merecen las bibliotecas VXL.

Instalacin de CMake

El procedimiento para instalar esta herramienta ser muy sencillo ya que en la pgina oficial se nos proporciona directamente el instalador para Winows. No tenemos ms que descargar el archivo cmake-2.4.7-win32-x86.exe de la pgina oficial de CMake, www.cmake.org y seguir los pasos que se nos indican. Tambin se podr obtener este archivo del soporte digital que acompaa a esta documentacin.
Instalacin de VXL

En este caso, necesitamos obtener la versin no compilada de VXL. Esto lo podemos realizar a travs de la pgina http://vxl.sourceforge.net/. El fichero a descargar tiene el nombre vxl-1.9.0.zip y se corresponde con la ltima versin disponible. Tambin se proporciona una copia en el soporte digital que acompaa esta documentacin. Para poder llevar a cabo la instalacin de VXL ser imprescindible contar con la herramienta CMake previamente instalada. Los pasos a seguir son los siguientes: Creamos un directorio en el que instalar la librera vxl, por ejemplo, C:\vxl\ Descomprimimos el fichero descargado (vxl-1.9.0.zip) en el directorio escogido, dando lugar al subdirectorio vxl-1.9.0 (C:\vxl\vxl-1.9.0). En el mismo directorio (C:\vxl\) creamos otra carpeta en la que se ubicarn los archivos binarios. La llamaremos bin. Lanzamos el CMake. Seleccionamos el directorio fuente, el directorio para ejecutables y el compilador.

114

Apndice B: INSTRUCCIONES DE COMPILACIN

Desactivamos las opciones siguientes: o BUILD_EXAMPLES o BUILD_SHARED_LIBS o BUILD_TESTING Para las dems, mantenemos las opciones por defecto.

Hacemos click en Configure. Hacemos click enOk. Abrimos el archive .sln en el directorio C:\vxl\bin\ Ya en el Visual Studio, seleccionamos ALL_BUILD Project y lo compilamos. Esta operacin puede tardar entre 15 minutos y media hora dependiendo de la potencia del equipo...

Despus de eso, tendremos compiladas en el directorio C:\vxl\bin\ todo el conjunto de libreras VXL.
Compilacin del proyecto

Una vez instaladas todas las herramientas necesarias para la utilizacin del proyecto, explicaremos el procedimiento a seguir para su compilacin. El primer paso que debemos dar ser el de obtener la versin no compilada del proyecto desarrollado. Para ello, podemos copiar directamente el directorio aplicacin que se incluye en el soporte digital que acompaa a esta documentacin. Dentro de ese directorio encontraremos el subdirectorio bin, el subdirectorio src y un archivo CMakeLists.txt. El contenido de ese archivo es: #Nombre del proyecto "VISION" PROJECT(VISION)

SET(VXL_DIR C:/PFC/bin)

SET(EXECUTABLE_OUTPUT_PATH ${VISION_SOURCE_DIR}/bin)

FIND_PACKAGE(VXL)

115

Apndice B: INSTRUCCIONES DE COMPILACIN

IF(VXL_FOUND) INCLUDE(${VXL_CMAKE_DIR}/UseVXL.cmake) ENDIF(VXL_FOUND)

#El codigo fuente se encuentra todo almacenado en el directorio src SUBDIRS(src)

Substituimos la lnea SET(VXL_DIR C:/PFC/bin) por SET(VXL_DIR C:/vxl/bin)

que es el directorio donde hemos instalado las bibliotecas VXL. Mediante este cambio indicamos a CMake donde puede encontrar las bibliotecas VXL que necesitamos enlazar para compilar el proyecto. De nuevo tendremos que ejecutar la herramienta CMake, indicando, como directorios fuente y binarios, src y bin respectivamente. En este caso, aceptamos todas las opciones por defecto y generamos la solucin correspondiente para el compilador de Visual Studio 2005. Finalmente, abrimos con el Visual Studio la solucin generada, que recibe el nombre VISION.sln (dentro de aplicacin\bin\) y la compilamos. Tras esto, en el directorio aplicacin\bin\debug\ tendremos el archivo procesa.exe, que es el ejecutable para Windows del servidor de reconocimiento. Para poder ejecutar el servidor, necesitamos copiar en el mismo directorio en la que situemos el archivo ejecutable (procesa.exe) la carpeta con los patrones (ver contenido del CD).

Ejecucin del sistema previamente compilado

Tambin es posible obtener del soporte digital el sistema previamente compilado y preparado para ser ejecutado directamente en un entorno Windows, sin necesidad de realizar los pasos anteriores. Para ello no tenemos ms que copiar la carpeta correspondiente (ver contenido del CD) del CD a nuestro disco duro y ejecutar el archivo procesa.exe.

116

Apndice C: USO DE LA APLICACIN DE CAPTURA

Apndice (C) USO DE LA APLICACIN DE CAPTURA

Se explica aqu el funcionamiento bsico del software de calibracin. Prescindiremos de los pasos dedicados a la introduccin de parmetros necesarios para la elaboracin de los informes, que no resultan relevantes para nuestro proyecto. Intentaremos ilustrar, por tanto, solamente la parte dedicada a la captura de imgenes y la interpretacin de resultados. Empezaremos entonces, directamente en la ventana en la que se selecciona la cmara fotogrfica y todo lo relacionado con ella. Distinguimos dos partes: Elegir Cmara y Configurar. Si deseamos cmara fotogrfica (siempre, en el caso que nos ocupa) debemos seleccionar Usar Cmara Fotogrfica, y a continuacin elegir una de la lista desplegable Cmara Fotogrfica. La opcin Se quiere interpretacin significa que el sistema interpretar las fotografas efectuadas a los displays de las muestras, extrayendo su valor e incorporndolo a los archivos de salida del proceso. Si esta opcin no se selecciona, no se realizar ninguna interpretacin sobre los archivos, quedando en manos del tcnico. 117

Apndice C: USO DE LA APLICACIN DE CAPTURA

Una vez seleccionada una cmara fotogrfica, es hora de configurarla. El primer paso es asegurarse de que la cmara est conectada a la computadora, y tiene alimentacin elctrica. Comprobado esto, debemos pulsar el botn Configurar. Dependiendo del modelo, esta tarea puede tardar varios segundos.

Ventana de cmara fotogrfica de la nueva calibracin

Tambin se introducir en este punto, de forma opcional, los parmetros relativos a formato numrico, punto de consigna y margen. Una vez est configurada la cmara, debemos pulsar Capturar para obtener una imagen. En este momento indicaremos qu zona de la foto recoge el display de cada calibrando introducido en la primera ventana del alta de calibracin. Debemos hacer clic en la esquina superior izquierda del display, arrastrar hasta la esquina inferior derecha del mismo, y soltar. Veremos cmo surge un rectngulo azul indicando la zona que estamos seleccionando. Al soltar, la imagen cambiar, reflejando la zona concreta que acabamos de seleccionar.

118

Apndice C: USO DE LA APLICACIN DE CAPTURA

Detalle de la seleccin de display en la ventana de cmara fotogrfica de la nueva calibracin.

Resultado de la seleccin de display en la ventana de cmara fotogrfica de la nueva calibracin.

119

Apndice C: USO DE LA APLICACIN DE CAPTURA

Tras la seleccin se muestra el nmero interpretado en la pantalla. Si despus de hacer esta operacin vemos que la zona recortada no es la que deseamos o que el nmero no es el correcto, debemos pulsar Capturar para volver a tomar una imagen de la cmara, y volver a repetir la operacin de seleccin. Si, por el contrario, la seleccin tiene xito, debemos pulsar en el botn Adelante para continuar con la calibracin. A continuacin mostraremos un ejemplo de ejecucin, en el que se ve cmo se van mostrando las imgenes junto con los resultados interpretados que, posteriormente sern volcados a la hoja de clculo para realizar el informe correspondiente.

120

Apndice C: USO DE LA APLICACIN DE CAPTURA

Proceso en ejecucin

121

Apndice C: USO DE LA APLICACIN DE CAPTURA

122

BIBLIOGRAFA

BIBLIOGRAFA

[F. Martn]

Contribucin al reconocimiento de caracteres en imgenes complejas, Fernando Martn Rodrguez. Tesis Doctoral.

Universidad de Vigo, 1999. [A. Dacal]


Sistema de calibracin automtica de termohigrmetros,

ngel Dacal Nieto. Proyecto Fin de Carrera. Universidad de Vigo, 2007. Director: Arno Formella. Codirector: Higinio Gonzlez Jorge. [Gonzalez & Woods] Rafael C. Gonzlez, Richard E. Woods. Digital Image
Processing. Ed. Prentice Hall, 3 edicin, 2008.

[Jain]

Anil K. Jain. Fundamentals of Digital Image Processing. Ed. Prentice Hall. 1989.

123

BIBLIOGRAFA

[Shapiro]

Linda G. Shapiro, George C. Stockman, Computer Vision. Ed. Prentice Hall. 2001.

[Gonzalez]

Rafael C. Gonzlez. Digital Image Processing Using


Matlab. Ed. Prentice Hall. 2004.

[R. Montoto]

Roberto C. Montoto, Fernando Martn (tutor). Curso


Prctico de Procesado de Imagen Usando Matlab.

Proyecto Fin de Carrera, Universidade de Vigo. 2000. [G. Pajares] G. Pajares, J.M. de la Cruz. Visin por Computador. Ed. Ra-ma. 2001. [J. Gonzlez] Javier Gonzlez Jimnez. Visin por Computador. Ed. Paraninfo. 1999. [E. R. Davies] E. R. Davies. Machine Vision, theory, algorithms,
practicalities. Ed. Elsevier. 3 edicin, 2005.

[Otsu]

N. Otsu. "A Threshold Selection Method for Gray Level Histograms". IEEE Transactions on System, Man and Cybernetics. Enero, 1979.

[Stroustrup]

Stroustrup, B., El lenguaje de Programacin C++, 3 edicin (Especial), Addison-Wesley, 2001.

[Deitel]

Deitel, H. M., Deitel, P. J., C++ How to Program. 3 Edicin. Prentice Hall. 2000.

[Josuttis]

Nicolai M. Josuttis, The C++ Standard Library: A Tutorial


and Reference. Addison-Wesley.

[F. Martn 2]

Analysis Tools for Gray Level Histograms. F. Martn


Rodrguez. Proceedings de SPPRA-2003. Rodas (Grecia).

Junio, 2003. [Ohya] J. Ohya, A. Shio, S. Akamatsu. Recognizing Characters in Scene Images. IEEE Transactions of Pattern Analysis and

124

BIBLIOGRAFA

Machine Intelligence, Vol. 16, N 2, pp 214-220. Febresro, 1994. [Duda] Richard O. Duda, Peter E. Hart. Use of the Hough transformation to detect lines and curves in pictures. Technical Note 36, Abril 1971. Comm. ACM, Vol 15, N 1, pp. 11-15 (Enero 1972).

Direcciones de inters:

[VXL] [LOMG] [MathWorks] [CMake] [STL]

http://vxl.sourceforge.net http://www.lomg.net http://www.mathworks.com http://www.cmake.org http://www.cplusplus.com/reference/stl/

125

También podría gustarte