Вы находитесь на странице: 1из 66

Benemrita Universidad Autnoma de Puebla

Facultad de Ciencias de la Computacin

Software de Procesamiento Paralelo para el Procesamiento Digital de Imgenes Tesis


Que para obtener el titulo de: Licenciado en ciencias de la computacin Presenta:
Mnica Campos Snchez

Asesor: M.C. Graciano Cruz Almanza

Puebla, Pue. 2004

INDICE
INTRODUCCIN CAPITULO I
1.1 PROCESADORES CISC Y RISC...................................... 1.2 TAXONOMIA DE FLYNN...................................... 1.3 PROCESAMIENTO PARALELO...................................... 1.4 VENTAJAS DEL PARALELISMO.................................... 1.5 EL TRANSPUTER.............................. 1.6 LA TARJETA FAST-9................................ 1 2 7 7 8 11 i

PROCESAMIENTO PARALELO

CAPITULO II

PROCESAMIENTO DIGITAL DE IMGENES (PDI)


2.1 INTRODUCCION....................................... 2.2 PROCESAMIENTO DIGITAL DE IMGENES (PDI)................................. 2.2.1 REPRESENTACION DIGITAL DE IMGENES............................... 2.2.2 ETAPAS FUNDAMENTALES DEL PROCESAMIENTO DE IMGENES 2.2.3 ELEMENTOS DE LOS SISTEMAS DE PROCESAMIENTO DIGITAL DE IMGENES....................................................................................................................... 2.3 MEJORA DE LA IMAGEN........................................... 2.3.1 OPERACIONES PUNTUALES....................................... 2.3.2 OPERACIONES REGIONALES..................................................... 2.3.3 OPERACIONES GEOMETRICAS.............................. 2.3.4 OPERACIONES MORFOLGICAS....................................... 2.4 PROCESAMIENTO DE HISTOGRAMA...................................... 2.5 APLICACINES DEL PDI................................ 14 15 15 16 16 17 17 19 22 24 24 26

CAPITULO III DISEO DEL SISTEMA PARALELO PARA EL PROCESAMIENTO DIGITAL DE IMGENES
3.1 DESCRIPCION GENERAL.................................................................................... 3.2 DIAGRAMA GENERAL DEL SISTEMA......................................... 3.3 DISEO DEL FUNCIONAMIENTO GENERAL DEL SISTEMA....................................... 3.3.1 DISEO DE LA INTERFAZ DE USUARIO DEL SPPPID....................................... 3.3.2 DISEO DEL SISTEMA DE PROCESAMIENTO PARALELO PARA EL PDI................. 3.4. DISEO FINAL DEL SISTEMA A PARTIR DE LA FAST-9......................................... 3.5. ESTRUCTURA DE DATOS PARA MANIPULAR LOS PXELES DE LA IMAGEN.......... 3.6 ALGORITMOS PRINCIPALES................................................................................................. 3.6.1 ALGORITMOS ORIENTADOS AL PUNTO......................................................................... 3.6.1.1 NEGATIVO.................................................................................................................. 3.6.1.2 BINARIZACION.......................................................................................................... 3.6.1.3 ACLARAR.................................................................................................................... 27 27 28 28 29 32 34 36 37 37 37 38

3.6.1.3 OBSCURECER............................................................................................................. 3.6.2 ALGORITMOS ORIENTADOS A LA REGION.................................................................... 3.6.2.1 BORDE EN X............................................................................................................... 3.6.2.2 PROMEDIO.................................................................................................................. 3.6.2.3 SOBEL.......................................................................................................................... 3.6.3 ALGORITMOS ORIENTADOS A LA GEOMETRA........................................................... 3.6.3.1 REFLEXION EN X...................................................................................................... 3.6.3.2 ROTACION 180........................................................................................................... 3.6.3.3 AMPLIACION ISOMETRICA.................................................................................... 3.6.4 ALGORITMOS MORFOLGICOS........................................................................................ 3.6.4.1 EROSION.....................................................................................................................

38 39 39 39 40 41 41 42 42 43 43

CAPITULO IV

IMPLEMENTACIN DEL SISTEMA


4.1 ESTRUCTURA GENERAL ........................................................................................................ 4.2 DETALLE DEL SISTEMA ......................................................................................................... 4.3 ESTRUCTURAS DE DATOS .................................................................................................... 4.4 DESCRIPCION DE FILTROS..................................................................................................... 4.5 ARCHIVO DE CONFIGURACIN............................................................................................ 4.6 PRUEBAS Y RESULTADOS..................................................................................................... 44 46 50 51 55 56

CONCLUSIONES.............................................................................................................................. APNDICE A ESTRUCTURA DE UN ARCHIVO BMP................................................................ BIBLIOGRAFA................................................................................................................................

59 60 63

INTRODUCCIN
El Procesamiento Paralelo es la habilidad de ejecutar mltiples procesos en forma simultanea, para solucionar un problema comn; involucra procesadores separados, ejecutando cada uno un proceso y los cuales en conjunto forman una tarea. Esencialmente el Procesamiento Paralelo es un mecanismo para permitir realizar tareas mas rpidamente. El Procesamiento Digital de Imgenes (P.D.I) es una rea que ha tenido gran auge en los ltimos aos. El avance esta sustentado en el uso de la complejidad digital para el procesamiento de imgenes digitales. El Procesamiento Digital de Imgenes implica el leer una imagen almacenada en un archivo, procesar dicha imagen realizando una gran cantidad de operaciones aritmticas y lgicas, para que finalmente la imagen resultante sea almacenada nuevamente en archivo o mostrada en pantalla. Los problemas emanados del procesamiento de imgenes se complican al tomar en cuenta el tamao de la imagen (que puede ser muy grande aunado a la complejidad o gran cantidad de operaciones aritmticas-lgicas que se efectan sobre la imagen). El Procesamiento Paralelo tiene como caracterstica principal el dar solucin a problemas que requieren gran cantidad de operaciones aritmticas-lgicas. Es por esto que el Procesamiento Paralelo se aplicara al Procesamiento Digital de Imgenes como una alternativa de solucin a los problemas que requieren una gran cantidad de operaciones aritmtico-lgicas. Los objetivos a alcanzar en este proyecto son los siguientes: 1. Conocer la estructura fsica y lgica de la tarjeta Fast-9 y el lenguaje de programacin C paralelo. Realizar programas ejemplos que muestren la utilizacin de instrucciones paralelas as como manipular archivos de configuracin para que se lleve a cabo la comunicacin entre transputers. 2. Manipular la estructura de datos de un archivo bitmap de 8 bits de profundidad en escala de grises y visualizarlo en pantalla. 3. Disear e implementar un sistema software paralelo para el procesamiento de imgenes digitales. La imagen debe procesarse en los cuatro transputers T800. 4. Aplicar varios filtros a la imagen bitmap 5. Reportar los tiempos obtenidos al procesar una imagen en 1, 2, 3 y 4 transputers. 6. Un problema ser mostrar la imagen en pantalla con sus 256 tonos de gris, ya que C paralelo no cuenta con una librera de grficos potente. En el Capitulo I se describen los procesadores RISC y CISC , se define la Taxonomia de Flynn, se explica el Procesamiento Paralelo, las Arquitecturas Paralelas, se explica todo lo referente al Transputer y a la tarjeta Fast9. En el Capitulo II se da una introduccin al procesamiento digital de imgenes, se explican cada uno de los filtros que sern aplicados a la imagen, se define el histograma de una imagen y se presentan ejemplos de aplicaciones del procesamiento de imgenes digitales. En el Capitulo III se repite la descripcin del problema con un enfoque computacional y se plantea una propuesta de solucin (diseo del sistema), esta propuesta estar descrita en algoritmos y diagramas de bloques perfectamente comentados. 4

Tambin contiene descripciones funcionales del sistema (diagramas de flujos, opciones de mens, etc). En el Capitulo IV se describe la implementacin del sistema, es decir se describe el programa desarrollado para resolver el problema planteado. Se da una descripcin por bloques del cdigo y ejemplos. Posteriormente se tienen las Conclusiones a las que se llego con la realizacin de este software de procesamiento paralelo. Y finalmente se tiene el Apndice A, que describe la estructura de un archivo Bitmap.

CAPITULO 1
PROCESAMIENTO PARALELO
1.1 PROCESADORES CISC Y RISC
CISC (Complex Instruction Set Computer). Es la arquitectura ms antigua que corresponde a procesadores capaces de ejecutar un gran nmero de instrucciones predefinidas en lenguaje mquina. El propsito esencial de una arquitectura CISC es intentar proporcionar una nica instruccin de maquina para cada enunciado que este escrita en un lenguaje de alto nivel. Caractersticas [2]: 1. Una gran cantidad de instrucciones, por lo general de 100 a 250 2. Algunas instrucciones que ejecuten tareas especializadas y que no se usen con frecuencia. 3. Una gran cantidad de modos de direccionamiento, por lo general de 5 a 20 modos diferentes. 4. Formatos de instrucciones de extensin variable. 5. Instrucciones que manipulen operandos en la memoria. 6. La microprogramacin significa que cada instruccin de mquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. En la dcada de los 60s la microprogramacin, por sus caractersticas, era la tcnica ms apropiada para las tecnologas de memoria existentes en esa poca y permita desarrollar tambin procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones. Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren varios ciclos de reloj (al menos uno por microinstruccin). RISC (Reduced Instruction Set Computer). A finales de los 70s aparece la tendencia RISC que permite una ejecucin ms rpida, ya que el RISC admite menos instrucciones que un CISC. El concepto de la arquitectura RISC significa un intento para reducir el tiempo de ejecucin al simplificar el conjunto de instrucciones de la computadora. Las caractersticas comunes a todos los procesadores RISC, son [2]:

1. 2. 3. 4. 5. 6.

Relativamente pocas instrucciones. Pocos modos de direccionamiento. El acceso a memoria limitado a instrucciones de recuperacion y almacenamiento. Todas las operaciones realizadas dentro de los registros de la CPU. Formatos de instrucciones decodificados con facilidad, de longitud fija. Control por circuiteria en lugar de microprogramado.

VENTAJAS DE RISC CONTRA CISC. a) Una computadora CISC gasta el 80% de su tiempo ejecutando solamente el 20% de sus instrucciones. b) La ejecucin en RISC es ms rpida que en CISC. c) Los programas en RISC ocupan menos espacio de memoria. d) Los compiladores comerciales no usan todas las instrucciones del procesador CISC.

1.2 TAXONOMIA DE FLYNN


La filosofa de Von Neumann define la arquitectura bsica de una computadora: un procesador centralizado operando sobre instrucciones y datos de memoria y/o entrada/salida, estando el procesador constituido principalmente por una unidad de control y una unidad funcional (operatoria). En 1966, Michael Flynn [2] propuso un sencillo modelo de organizacin de computadoras que an en la actualidad se utiliza conforme fue propuesto. La clasificacin se basa en la nocin del flujo de informacin. Dos tipos de informacin pasa por un procesador: instrucciones y datos. Eso se puede dividir conceptualmente entre dos flujos independientes. La taxonoma de Flynn clasifica las maquinas segn si cada uno de esos dos tipos de flujos es simple o mltiple. Puede haber secuencias de instrucciones sencillas o mltiples y secuencias de datos sencillas o mltiples. Existen entonces cuatro combinaciones [2]: SISD (Single Instruction, Single Data): una sola secuencia de instrucciones opera sobre una sola secuencia de datos (caso tpico de las computadoras personales). SIMD (Single Instruction, Multiple Data): una sola secuencia de instrucciones opera, simultneamente, sobre mltiples secuencias de datos (procesadores vectoriales). MISD (Multiple Instruction, Single Data): mltiples secuencias de instrucciones operan, simultneamente, sobre una sola secuencia de datos (sin implementaciones tiles actualmente). MIMD (Multiple Instruction, Multiple Data): mltiples secuencias de instrucciones operan, simultneamente, sobre mltiples secuencias de datos. Las computadoras utilizadas por Flynn fueron los IBM 740 y 7090, modelos SISD de la poca.

COMPUTADORAS SISD. Son las ms populares y extendidas. Este es el modelo tradicional de computacin secuencial donde una unidad de procesamiento recibe una sola secuencia de instrucciones que operan en una secuencia de datos.

Fig. 1.1 Arquitectura SISD. Este tipo de computadoras responde enteramente a la jerarqua Von Newmann clsica. La CPU controla todas las operaciones que se realizan en la mquina extrayendo secuencialmente (una detrs de otra) las instrucciones de programa desde la memoria. Esta misma memoria es usada para almacenar datos ya sean parciales o finales. La interaccin con el mundo exterior (perifricos) se realiza a travs de los puertos de entrada/salida (E/S). Internamente la CPU consta de una unidad de control, que ejecuta una a una las instrucciones de programa; una unidad lgico/aritmtica, que realiza las operaciones sobre los datos del programa; y algunos registros internos al procesador donde se almacenan datos parciales y direcciones. Este esquema plantea una filosofa de "terminar con la tarea actual para luego procesar la siguiente tarea", aunque sobre l superpongan recursos ingeniosos para aumentar el rendimiento total del procesador como son el encauzamiento (pipeline) de instrucciones, la cache o la ejecucin optimizable de instrucciones particulares. Las computadoras personales (PCs) y las estaciones de trabajo tienen una arquitectura SISD. La velocidad est limitada por la velocidad a la cual el computador puede transferir la informacin internamente. El procesador en este caso constituye un factor determinante y limitante. Ejemplo: Para procesar la suma de N nmeros a1, a2, ..., an, el procesador necesita accesar a memoria N veces consecutivas (para recibir un nmero). Tambin son ejecutadas en secuencia N-1 adiciones. COMPUTADORAS SIMD. En este caso se tienen mltiples procesadores que sincronizadamente ejecutan la misma secuencia de instrucciones, pero en diferentes datos. La idea bsica de esta familia de computadoras es, por un lado, disminuir los costes de diseo y fabricacin de un equipo en el que ciertas partes son compartidas, como es la unidad de control. Por otro lado, desde el punto de vista del software, esta caracterstica

es deseable en aquellos casos en que el cdigo de programa (o parte de l) posea ciertas caractersticas no secuenciales en la ejecucin de sus instrucciones. Aqu hay N secuencias de datos, una por procesador, as que diferentes datos pueden ser utilizados en cada procesador. Los procesadores operan sincronizadamente y un reloj global se utiliza para asegurar esta operacin. Es decir, en cada paso todos lo procesadores ejecutan la misma instruccin, cada uno en diferente dato.

Fig. 1.2 Arquitectura SIMD. La figura 1.2 muestra esta arquitectura particular donde se aprecia que existe un flujo nico de instrucciones desde memoria hacia la unidad de control y sta determina las operaciones bsicas a realizar por las distintas unidades funcionales, cada una de ellas actuando sobre un flujo de datos particular. En realidad las computadoras SIMD reales tienen una mezcla de instrucciones SISD y SIMD. Hay una computadora SISD para realizar operaciones como bifurcaciones, llamadas a rutinas, atencin de interrupciones, clculo de direcciones, etc., que no necesitan paralelismo masivo. Las instrucciones SIMD se envan a todas las unidades funcionales cada una de las cuales tiene su propio juego de registros. Para las instrucciones SIMD la unidad de control tiene la capacidad de habilitar o inhibir a algunas unidades funcionales que por la caracterstica del cdigo de programa no se necesiten. Estos procesadores se muestran muy eficientes a la hora de tratar con vectores en ciclos for y en situaciones de paralelismo de datos (masivos), sin embargo su rendimiento decrece en las sentencias de seleccin, al tener que ejecutar diferentes caminos para distintas opciones. Ejemplo de computadoras SIMD son la CRAY y Fujitsu Parallel Server AP3000 U300, por mencionar algunas.

COMPUTADORAS MISD. Aqu se tienen varias unidades de control, con varias unidades de ejecucin, existen distintos flujos de instrucciones y un nico flujo de datos, es decir, varias instrucciones ejecutndose paralelamente sobre un nico dato.

Fig. 1.3 Arquitectura MISD. Estas computadoras funcionan con el principio de bombear los datos secuencialmente a travs de una hilera de procesadores escalares donde en cada uno de ellos se realizan paralelamente operaciones sobre distintos datos. Desde el punto de vista de cada dato, ste pasa secuencialmente de un procesador al siguiente para transformarse de acuerdo a la operacin que realice cada procesador. Aqu hay N secuencias de instrucciones (algoritmos/programas) y una secuencia de datos. El paralelismo es alcanzado dejando que los procesadores realicen diferentes cosas al mismo tiempo en el mismo dato. Las mquinas MISD son tiles en cmputos donde la misma entrada esta sujeta a diferentes operaciones. Existen pocas maquinas en esa categora, ninguna que haya tenido xito comercial o que haya tenido impacto en la ciencia computacional. Un tipo de sistema que entra en la categora de maquina MISD es una red de pequeos elementos de clculo conectados en una malla regular. Todos estos elementos estn controlados por un reloj comn. En cada ciclo, un elemento lee un trozo de informacin de uno de sus vecinos, realiza una operacin simple, y prepara un valor que debe ser pasado a un vecino en el paso siguiente.

10

COMPUTADORAS MIMD. Esta categora es la ms diversa. Se basan en la idea de crear potentes computadores conectando sencillamente otros ms pequeos que cooperan entre s frente al coste de crear un computador potente. Presentan adems de la ventaja de coste una gran soportabilidad a fallos (si disponemos de n procesadores siempre podemos continuar la ejecucin con n-1), lo cual es una garanta en computadoras a las que se les exige un servicio continuo.

Fig. 1.4 Arquitectura MIMD. Tienen un alto rendimiento para tareas independientes. La coordinacin de tareas se consigue mediante mecanismos de sincronizacin, tcnicas de bloqueo de datos ante mltiples demandas y emisores de mensaje entre los procesadores. Este tipo de computadora es paralela al igual que las SIMD, la diferencia con estos sistemas es que MIMD es asncrono. No tiene un reloj central. Cada procesador en un sistema MIMD puede ejecutar su propia secuencia de instrucciones y tener sus propios datos. Esta caracterstica es la ms general y poderosa de esta clasificacin. Se tienen N procesadores, N secuencias de instrucciones y N secuencias de datos. Cada procesador opera bajo el control de una secuencia de instrucciones, ejecutada por su propia unidad de control, es decir cada procesador es capaz de ejecutar su propio programa con diferentes datos. Esto significa que los procesadores operan asncronamente, o en trminos simples, pueden estar haciendo diferentes cosas en diferentes datos al mismo tiempo. Los sistemas MIMD se clasifican en: Sistemas de Memoria Compartida. Cada procesador tiene acceso a toda la memoria, es decir hay un espacio de direccionamiento compartido. Se tienen tiempos de acceso a memoria uniformes ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal y las lecturas y escrituras de todos los procesadores tienen exactamente las mismas latencias; y adems el acceso a memoria es por medio de un ducto comn. En esta configuracin, debe asegurarse que los procesadores no tengan acceso simultneamente a regiones de memoria de una manera en la que pueda ocurrir algn error.

11

Sistemas de Memoria Distribuida. Estos sistemas tienen su propia memoria local. Los procesadores pueden compartir informacin solamente enviando mensajes, es decir, si un procesador requiere los datos contenidos en la memoria de otro procesador, deber enviar un mensaje solicitndolos. Esta comunicacin se le conoce como Paso de Mensajes. Sistemas de Memoria Compartida Distribuida. Es un cluster o una particin de procesadores que tienen acceso a una memoria compartida comn pero sin un canal compartido. Esto es, fsicamente cada procesador posee su memoria local y se interconecta con otros procesadores por medio de un dispositivo de alta velocidad, y todos ven las memorias de cada uno como un espacio de direcciones globales.

1.3 PROCESAMIENTO PARALELO


El procesamiento paralelo es un termino que se usa para denotar un grupo de tcnicas significativas que se usan para proporcionar tareas simultneas de procesamiento de datos con el fin de aumentar la velocidad computacional de un sistema de computadora [12]. En lugar de procesar cada instruccin en forma secuencial como en una computadora convencional, un sistema de procesamiento paralelo puede ejecutar procesamiento concurrente de datos para conseguir un menor tiempo de ejecucin. El propsito del procesamiento paralelo es acelerar las posibilidades de procesamiento de la computadora y aumentar su eficiencia, esto es, la cantidad de procesamiento que puede lograrse durante un cierto intervalo de tiempo. El procesamiento paralelo puede considerarse desde diversos niveles de complejidad. En el nivel mas bajo, distinguimos entre operaciones seriales paralelas mediante el tipo de registros que utilizan. Los registros de corrimiento operan en forma serial un bit a la vez, mientras que los registros en carga paralela operan con todos los bits de la palabra en forma simultanea. Puede obtenerse un procesamiento paralelo a un nivel mas alto de complejidad al tener mltiples unidades funcionales que ejecuten operaciones idnticas o diferentes, de manera simultanea. El procesamiento paralelo se establece al distribuir los datos entre las unidades funcionales mltiples.

1.4 VENTAJAS DEL PARALELISMO


Las computadoras actuales tienen arquitectura (John Von Neuman), para el procesamiento secuencial [12]. El mundo real no es secuencial sino paralelo, es decir, varios eventos se realizan al mismo tiempo. La solucin secuencial a problemas con eventos que se suscitan en paralelo es limitado. Las arquitecturas paralelas tienen un notable incremento en la velocidad de procesamiento. En computacin el procesamiento paralelo es la ejecucin de diferentes procesos en dos o ms procesadores al mismo tiempo, donde estos procesos juntos resuelven un problema completamente. Un proceso debe entenderse como un fragmento de cdigo en ejecucin que convive con otros fragmentos. 12

1.5 EL TRANSPUTER
Transputer (Transister Computer): es un microprocesador con su propia memoria local y con cuatro ligas para su conexin con otros transputers. El transistor fue inventado por William Schockley en 1949. A finales de los 80's, aparece el Transputer, con tecnologa RICS y arquitectura MIMD, dicho Transputer es la implementacin hardware del modelo de programacin OCCAM, pero dicho modelo de programacin esta basado en la teora de procesos comunicantes secuenciales (CSP) de Hoare [12]. El Transputer fue diseado con la idea de ser una "Unidad Bsica de Desarrollo" (bloque), as como lo es el transistor en la construccin de computadoras secuenciales. Los enlaces o links son la puerta de conexin de los transputers con el exterior. Todos los componentes electrnicos de esta familia de INMOS tienen al menos uno de estos, teniendo cada transputer cuatro links. Basndonos en esta filosofa de interconexin pueden obtenerse estructuras topolgicas muy complejas. Cada transputer tiene ligas que le sirven para conectarse y comunicarse con otros transputers fsicamente. Lgicamente, cada liga se ve como dos canales unidireccionales para que dos tareas en procesadores distintos puedan intercambiar mensajes entre ellas. Se dice entonces, que una liga tiene dos canales, uno de entrada y otro de salida. Existen actualmente tres tipos diferentes de Transputer en el mercado y estos son: El T200 que es de 16 Bits. El T400 que es de 32 Bits y adems no puede realizar por hardware operaciones de punto flotante. El T800 que es de 32 Bits, capaz de realizar por hardware operaciones de punto flotante. El T800 es un T400 con un coprocesador de punto flotante y esta disponible en versiones de 20, 25 o 30 MHz. El T400 esta disponible en versiones de 15 o 20 MHz. La unin de bloques de Transputers permitir ir armando grandes sistemas con alto rendimiento. El Transputer T-800 es un microprocesador de tecnologa RISC con arquitectura enfocada al paralelismo. Su diagrama es :

TRANSPUTER T-800 CPU DE 32 BITS 20 Mbits 20 Mbits

LIGA 1 LIGA 2

1 MB DE RAM INTERNA

LIGA 3 LIGA 4 INTERFACE DE MEMORIA EXTERNA

20 Mbits 20 Mbits

Fig. 1.5 Arquitectura interna de un Transputer T-800

13

Las caractersticas mas importantes del Transputer T-400 son: a. Procesador de 32 bits.

b. Interface para PC, SUN O MAC. c. Interface externa para control. d. Memoria de 1 a 4 kbytes. e. Rendimiento lineal. f. Aritmtica de punto flotante. g. Software: Occam, Modula, Pascal, Ada, C, Fortran, Prolog. h. Sistemas operativos: Express, Helios. La arquitectura interna de un transputer T-800 consiste de un procesador, una memoria y sistemas de comunicacin conectados por medio de un bus de 32 bits. Adems cuentan con una unidad de punto flotante. La figura 1.10 muestra su arquitectura interna a nivel de bloques. TOPOLOGA DE LOS TRANSPUTERS La topologa de los transputers es las diferentes formas en que los CPUs se pueden interconectar, definiendo diferentes formas. ARREGLO LINEAL

ANILLO

MALLA

14

ARBOL UBICACIN DE LOS TRANSPUTERS A diferencia de otros microprocesadores, nadie ha desarrollado ordenadores completos basados en los transputers. stos suelen ir en mdulos independientes denominados TRAM (transputer module) que se conectan a una placa madre que se enchufara a otro ordenador que actuara como host. Este host puede ser, segn la placa, un compatible PC, una estacin SUN o un Macintosh.

Fig.1.6 Ubicacin de los Transputers en la Fast-9 La cantidad de memoria en el chip: El T414 y T400 tienen solamente 2kbytes de memoria interna, mientras las series T8xx tienen 4Mbytes. Multitarea El proceso por el cual un procesador divide su tiempo entre varios programas ejecutndose al mismo tiempo es llamado multitarea. Acceso a memoria El Transputer puede accesar a un espacio de direccionamiento lineal de 4 Gbytes (2 ^ 32 bits), que corresponden a sus registros de direccin de 32 bits. Memoria interna rapida Para el Transputer, el acceso a su memoria esttica interna ser aproximadamente tres veces mas rpida que accesar a su memoria externa. A una velocidad de reloj de 30 MHZ, por ejemplo, el T800 proporciona un ancho de banda de memoria de 120 Mbytes/sec, cuando se accesa a memoria interna.

15

Los puertos seriales de E/S El Transputer T800 proporciona 4 ligas seriales bidireccionales, siendo cada liga un conjunto de dos conductos. Cuando dos Transputers estn interconectados, ellos intercambian informacin a travs de una de sus ligas. Los procesos (o tareas) se ejecutan en cada transputer y luego se liberan para comunicarse, intercambiando datos o mensajes en la liga. Usaremos el termino liga para referirnos a la conexin fsica entre 2 transputers, y el termino canal para describir la conexin del software entre los dos procesos. La transferencia de datos sobre una liga serial es sincronizada y no canalizada. El termino sincronizacin se refiere al hecho de que si Proceso(P1) que se ejecuta en el Transputer(T1) necesita intercambiar (enviar o recibir) informacin con el Proceso (P2) en el Transputer (T2), entonces debe esperar hasta que P2 este listo para participar en el intercambio. Entonces se dice que los procesos estn sincronizados, puesto que el transmisor no puede liberar sus datos hasta que el receptor este listo para aceptarlos y a la inversa. Comunicacin no canalizada: Significa que almacenamiento no temporal es necesario para guardar mensajes de entrada o salida. La transferencia se efecta de forma directa entre la memoria del transmisor y la memoria del receptor. Estimacin de la transferencia de datos Los datos se transfieren un byte a la vez, cada byte genera un reconocimiento del transputer receptor. La transferencia tpica de velocidad es 10Mbits/sec, aunque, las velocidades tambin existentes son de 5 y 20 Mbits/seg. Cuando 2 transputers intercambian datos en ambas direcciones, el ancho de banda en la liga puede alcanzar un mximo de 2.35 Mbytes/seg.

1.6 La Tarjeta FAST-9


La Fast-9 cuenta con cuatro transputers. La configuracin que tiene esta tarjeta se muestra en la figura 1.11. Los nombres HOST, ROOT, P1, P2, y P3 son los nombres que se les dan a los procesadores. Las lneas rectas representan las conexiones fsicas entre los procesadores HOST, ROOT, P1, P2, y P3.

0 0 2 ROOT 3 1 0 1 P1 3 2 0 1 P2 3 2 0 1 P3 3 2

Fig 1.7 Arquitectura de una Tarjeta FAST-9

16

El procesador HOST equivale al procesador de la PC. ROOT, P1,P2 y P3 son los transputers de la tarjeta. Las ligas estn representadas por las lneas que unen a cada procesador y el digito junto a estas representa el numero de la liga que se esta utilizando. Existen dos tareas que pertenecen al compilador de C paralelo. La primera es AFSERVER, que debe ser ejecutada en el procesador de la PC (HOST). Esta se encarga de cargar archivos ejecutables (.b4) en el transputer y funciona como un servidor de archivos manejando solicitudes hechas por el transputer. La segunda es FILTER, que se ejecuta paralelamente con el programa de usuario y con la tarea AFSERVER; su funcin es la de pasar mensajes en dos direcciones y verificar que la longitud de estos al pasar entre el programa de usuario y el AFSERVER sean consistentes. Esta tarea se ejecuta en el procesador ROOT. La tarjeta FAST-9 suministra una alta ejecucin de procesamiento paralelo en muchas reas de computacin, simulacin y anlisis, incluyendo: Anlisis de elementos finitos Diseo de optimizacin ptica Bsqueda y clasificacin paralela Procesamiento de seales Procesamiento de imgenes Reconocimiento de huellas digitales Redes neuronales. La potencia de la Fast-9 es sacar importantes simulaciones en Fortran, las cuales son tradicionalmente ejecutadas sobre potentes medios compartidos de computadoras mainframe. Soporte de Software La FAST-9 es soportada por un amplio y creciente rango de herramientas para el desarrollo rpido, fiable y profesional de software: Paralelismo de bajo nivel El lenguaje Occam esta bien estructurado para el desarrollo de cdigo eficiente y correcto para el procesamiento paralelo de bajo nivel. La FAST-9, con sus 4Mbytes caractersticas de control maestro y subsistema, es una plataforma bien balanceada para el Transputer Inmos desarrollado en el sistema IMS D700 y el conjunto de herramientas Occam. Correspondencia de Memoria y Procesador La FAST-9 puede ser constituida con procesadores de 4 a 9 y cada uno puede tener 1 MB o 4 MB de memoria. Hay dos opciones de velocidad de procesador: cualquiera de los dos IMS T800-20 con cero estados de espera, 3 ciclos de memoria o IMS T800-25 con 4 ciclos de memoria.

17

18

CAPITULO 2

PROCESAMIENTO DIGITAL DE IMGENES


2.1 INTRODUCCIN
Desde 1964 hasta la actualidad, el tratamiento digital de imgenes ha progresado vigorosamente. Las tcnicas de procesamiento digital de imgenes se emplean actualmente para resolver problemas muy diversos. Estos problemas requieren mtodos capaces de realzar la informacin de las imgenes para la interpretacin y el anlisis humano. El tratamiento de imgenes consiste en la manipulacin de la misma con el fin de mejorar su visibilidad. El resultado puede ser usado para la interpretacin humana (p.ej. mdico) o por un computador Los procedimientos de mejora de las imgenes y de restauracin se emplean para procesar imgenes degradadas de objetos irrecuperables o bien resultados experimentales demasiado costosos para ser duplicados. Los conceptos del tratamiento de imgenes se aplican con xito en astronoma, biologa, medicina nuclear, investigaciones judiciales, defensa y aplicaciones industriales. La Figura 2.1 muestra algunos ejemplos de los resultados que se obtienen con las tcnicas de tratamiento digital de la imagen. Las imagen original es la de la izquierda , mientras que a la derecha se ve la imagen procesada por computadora. La figura 1.1(a) es una representacin de una imagen muy corrompida por el ruido. Este ejemplo muestra los resultados del procesamiento destinado a la interpretacin humana. El segundo campo de aplicacin de las tcnicas de tratamiento digital de imgenes consiste en la resolucin de problemas relacionados con la percepcin automatizada. En este caso, el inters se centra en los procedimientos para extraer la informacin de la imagen de forma conveniente para el procesamiento por computadora. Ejemplos de los tipos de informacin utilizados en la percepcin automatizada son los momentos estadsticos, los coeficientes de las transformadas de Fourier y las medidas de distancias multidimensionales.

(a) (b) Fig. 2.1 Ejemplo de tratamiento digital de imgenes. Columna de la izquierda : imagen digital original. Columna de la derecha: imagen despus del procesamiento.

19

2.2 PROCESAMIENTO DIGITAL DE IMGENES 2.2.1. Representacin digital de imgenes


El termino imagen se refiere a una funcin bidimensional de intensidad de luz f(x, y), donde x e y representan las coordenadas espaciales y el valor de f en un punto cualquiera (x, y) es proporcional al brillo (o nivel de gris) de la imagen en ese punto. Una imagen digital puede considerarse como una matriz cuyos ndices de fila y columna identifican un punto de la imagen y el valor del correspondiente elemento de la matriz indica el nivel de gris en ese punto.
columnas (eje x)

x11

x12 . . .

x1 n

I=

filas (eje y)

x21 x22 . . . x2 n . . . . . . . . . . . . xm1 xm2 . . . xmn

Fig. 2.2 Representacin de una imagen digital Para el registro de una imagen se acostumbran usar formatos que estn referenciados por el nmero de bits que son utilizados para la cuantizacin de la cantidad de luz recibida. Los tipos ms frecuentes son: Nmero de bits 1 4 8 Descripcin Imagen monocromtica Imagen de 16 niveles Imagen de 256 niveles

En esta tesis se trabajara con imgenes de 8 bits, los cuales permiten representar 256 niveles de gris, el rango es [0..255]. Bajo esta representacin los elementos de la matriz que representan a la imagen xij [0..255]. Al punto xij = I[i,j] se le llama pxel y se debe entender como el tono de gris que se ha asociado a la imagen en la coordenada (i,j). Los canales cromticos son el rojo, verde y azul (RGB). Un color (pxel) se genera tras la combinacin de estos tres tonos primarios que entiende el sistema computacional. El valor de cada uno de los canales esta en el intervalo de cero hasta 255. Definiremos en el espacio RGB un color gris como aquel que tiene sus tres componentes iguales, de tal forma que todo gris tendr la forma: Z = (z, z, z) Es decir la proporcin de cada uno de los colores bsicos es la misma. Por tanto podemos afirmar que los grises se ubican en la recta que va del origen (0,0,0) al punto (255,255,255). 20

2.2.2 Etapas fundamentales del procesamiento de imgenes


1) La primera etapa del proceso es la adquisicin de una imagen digital. Para ello se necesita un sensor de imgenes y la posibilidad de digitalizar la seal producida por el sensor. El sensor puede ser una cmara de televisin, monocroma o de color, que produce una imagen. El sensor puede ser tambin una cmara de barrido de lneas que produzca una lnea de la imagen En este caso, el movimiento de la imagen a travs del barrido de lneas produce la imagen bidimensional. 2) La siguiente etapa trata del preprocesamiento de esa imagen. La funcin bsica del preprocesamiento es la de mejorar la imagen como por ejemplo: mejorar el contraste, eliminar el ruido, etc. 3) La siguiente etapa trata de la segmentacin . La segmentacin consiste en partir una imagen de entrada en sus partes constituyentes u objetos. Este proceso da como resultado los datos de pxel en bruto que constituyen el contorno de una regin o todos los puntos de una regin determinada. 4) La siguiente etapa trata de la Representacin y Descripcin La eleccin de una Representacin sirve para transformar los datos de pxel en bruto a una forma adecuada para ser posteriormente tratados por computadora. La Descripcin consiste en extraer rasgos con alguna informacin cuantitativa de inters o que sean fundamentales para diferenciar una clase de objetos de otra. 5) La ultima etapa trata del Reconocimiento e Interpretacin El Reconocimiento es el proceso que asigna una etiqueta a un objeto basndose en la informacin proporcionada por sus descriptores. La interpretacin implica asignar significado a un conjunto de objetos reconocidos

2.2.3 Elementos de los sistemas de procesamiento digital de imgenes


Los elementos de un sistema de procesamiento de propsito general capaz de realizar las operaciones de tratamiento digital de imgenes, que se acaban de presentar en la seccin 2.2.2, son los siguientes: 1) 2) 3) 4) 5) Adquisicin Almacenamiento Tratamiento Comunicacin Presentacin de imgenes

1) Adquisicin Los dispositivos a emplear para la adquisicin de una imagen digital es una cmara de video y un escner. 2) Almacenamiento Las cintas magnticas y los discos pticos son los medios frecuentes para almacenar una imagen.

21

3) Procesamiento El dispositivo usado es una computadora . Sin embargo, para resolver problemas a gran escala de procesamiento de imgenes se tienen que emplear computadoras mucho mas potentes e incluso supercomputadoras especializadas. 4) Comunicacin La comunicacin se refiere a la transmisin de los datos de las imgenes. Los dispositivos empleados son: video, escner, monitores de televisin, pelcula, impresoras, computadora, discos pticos, etc. 5)Presentacin Los monitores de televisin monocromos y de color, son los principales dispositivos de presentacin utilizados en los sistemas de procesamiento de imgenes. Los dispositivos de impresin de imgenes son tiles para el trabajo de procesamiento de baja resolucin. Otros medios comunes de grabar una imagen sobre papel son las impresoras lser, los dispositivos de impresin trmica y los sistemas de chorro de tinta.

2.3 MEJORA DE LA IMAGEN


Son tcnicas de mejora de imagen todos los algoritmos destinados a acentuar, resaltar, contrastar, etc., determinados aspectos de la imagen o eliminar efectos no deseados como, por ejemplo, desenfoques y ruidos. Para simplificar el estudio de las diferentes tcnicas, las dividiremos en la siguientes categoras: operaciones puntuales, regionales, geomtricas y morfolgicas.

2.3.1 Operaciones puntuales


Las operaciones orientadas al punto transforman a la imagen modificando un pxel a la vez, en general sin importar el estado de los pxeles vecinos. 1) Negativo Sea x = (r, g, b) un pxel de la imagen I, entonces el negativo de x se puede hallar como: x= (~ r, ~ g, ~ b) De forma grfica para cada canal el negativo se puede interpretar como una lnea de transformacin con pendiente negativa.

Fig. 2.3 Transformacin de la funcin negativo En el siguiente ejemplo se aplica la transformacin negativo a una imagen en tonos de gris (r = g = b = z), de donde el negativo de un pxel x = (z, z, z) ser x=(~ z,~ z, ~ z)

22

Imagen original

Imagen Negada

2) Binarizacin Transforma una imagen en Blanco/Negro, es decir cada tono de gris de la imagen se convierte en tono negro o blanco siempre y cuando sea menor o mayor a un tono medio definido. 0.......................................128..................................255

tono medio
Fig. 2.4 Rango definido en escala de grises para el tono medio

Imagen original

Imagen Binarizada

3) Aclara Aumenta el tono de cada pxel de la imagen obteniendo una imagen mas clara. Un caso particular es cuando el tono es igual a 100.

Imagen original

Imagen aclarada

23

2.3.2 Operaciones regionales


Las operaciones orientadas a la regin transforman a la imagen modificando un pxel a la vez y toman en cuenta para dicha transformacin los pxeles vecinos. Los pxeles vecinos son aquellos que se encuentran alrededor de un punto central (x, y) de una regin de 3x3 de una imagen de tamao n x m. origen
0, 0

(x, y)

Imagen nxm y Fig. 2.5 Representacin de un entorno 3x3 en una imagen de nxm Los vecinos de un punto central (x, y) en un entorno de 3x3 se representan de la siguiente forma:
x-1,y-1 x-1,y x, y-1 (x, y) x+1, y-1 x+1,y

x-1,y+1 x, y+1 x+1, y+1

Fig. 2.6 Vecinos de un punto central (x, y) Nota: Debido a que algunos filtros regionales hacen referencia al trmino convolucin se dar una breve descripcin: La convolucin es una operacin entre matrices que produce un nmero real de tal forma que los elementos de las matrices se combinan uno a uno multiplicndose y los productos se suman. Se representa por el smbolo . Filtros Regionales: 1) Sobel Remarca los bordes de una imagen utilizando los operadores gradiente en X (direccin horizontal) y Y (direccin vertical). Se utilizan los operados de sobel para el calculo de la derivada en un punto z5 (pxel central de un entorno 3x3). Gx = -1 -2 -1 0 0 0 1 2 1 Gy = -1 -2 -1 0 0 0 1 2 1

Fig. 2.7 Operadores de Sobel

24

Para el calculo de Sobel se hace la convolucion de Gx , tomando una regin 3x3 de la imagen I(x, y). Esto genera un nmero que se asigna al pxel (x, y) de la nueva imagen I(x, y).Para el calculo de Gy se realiza lo mismo, ya que al final se tomara al mayor de los 2 resultados dados por la convolucion de Gx I[x, y] y Gy I[x, y] . -1 -2 -1 I[x, y]= 0 1 0 2 0 1 I[x-1,y-1] I[x,y-1] I[x+1,y-1] I[x-1,y] I[x,y] I[x+1,y]

I[x-1,y+1] I[x,y+1] I[x+1,y+1]

La convolucin de Gx I[x,y] se realiza de la siguiente manera: I[x, y]= (-1)*I[x-1,y-1]+(-2)*I[x,y-1]+......................+(1)*I[x+1,y+1] I[x, y]= -1 -2 -1 0 0 0 1 2 1 I[x-1,y-1] I[x,y-1] I[x+1,y-1] I[x-1,y] I[x,y] I[x+1,y]

I[x-1,y+1] I[x,y+1] I[x+1,y+1] I[x, y] es:

De la misma forma la convolucin de Gy

I[x, y]= (-1)*I[x-1,y-1]+(0)*I[x,y-1]+......................+(1)*I[x+1,y+1]

Imagen original

Imagen con Sobel

Antes de describir alguno filtros orientados a detectar bordes, se dar una breve descripcin de la derivada a nivel digital. La derivada es una operacin que extrae los bordes de la figura. Dado que la derivada haya los cambios, entonces en las zonas uniformes su valor es cero, por lo cual en estos el fondo es negro y en las transiciones solo queda el perfil de la figura es decir su borde en la direccin horizontal 2) Borde en x Resalta los bordes en direccin horizontal (x) de una imagen. La frmula para calcular los bordes en x es la siguiente: I[x,y]= I[x,y] - I[x-1,y]

25

Es decir, cada pxel toma a su vecino que se encuentra a la izquierda de l, aplicando valor absoluto al resultado. x-1,y-1 x, y-1 x+1,y-1 x-1,y x,y x+1,y

x-1,y+1 x,y+1 x+1,y+1 Fig. 2.8 Cada pxel toma a su vecino que se encuentra a la izquierda.

Imagen original

Imagen con borde en x

3) Promedio Tiene por objetivo principal eliminar aquellos elementos que presenten ruido en la imagen, suavizando de esta forma la imagen. El mtodo que se sigue para aplicar el promedio a una imagen de nxm es el siguiente: a) Se toma una regin de 3x3 b) Se suman los pxeles vecinos del pxel central I(x, y), incluyndose l mismo. c) El resultado se divide entre el peso que en este caso es: p=1/9 d) Se asigna al pxel central I[x, y] el valor del resultado anterior.

x
x11 x12 x13 . . . x21 x22 x23 . . . x2m x31 x32 x33 . . . x3m ............... ............... ............... . . . ............... xn1 xn2 xn3 . . . xnm

x1m

Fig. 2.9 Representacin de una regin 3x3 y su pxel central (x22)

26

Imagen original

Imagen con promedio

2.3.3.Operaciones geomtricas
El valor de la intensidad de los pxeles en la imagen original y en la imagen resultante permanece invariable cambindose las coordenadas de los pxeles. Dentro de este grupo estn operaciones que se aplican sobre la imagen como las rotaciones (+90,-90,180) , reflexin en x, etc. 1) Reflexin en x Se invierte la posicin de las columnas sin modificar la posicin de las filas de la imagen. Es decir, el primer pxel de la imagen que se encuentra en la posicin x11 se va a la ltima columna de la nueva imagen en la posicin x1n y as sucesivamente hasta que se llega a la posicin x1n la cual tomara la posicin x11. x11 x21 . . . xn1 xn1 x21 . . . x11

x12 x22 . . . xn2 . . . . . . . . . . . . xm1 xm2 . . . xmn

I =

x12 xn2 x22 . . . . . . . . . . . . . . . xmn xm2 . . . xm1

Imagen original

Imagen con reflexin en x

2) Rotacin 180 Se invierte la posicin de las columnas y filas de la imagen. Es decir el pxel x11 se pasa a la posicin xnm y as sucesivamente hasta que se llega a la posicin xnm el cual pasar a la posicin x11.

27

x11

x21 . . .

xn1

x mn

x m2 . . .

xm1

I=

x12 x22 . . . xn2 . . . . . . . . . . . . xm1 xm2 . . . xmn

I=

x n2 x 22 . . . x 12 . . . . . . . . . . . . x n1 x 21 . . . x11

Imagen original

Imagen con rotacin 180

2.3.4. Operaciones morfolgicas


La palabra morfologa trata de la forma y estructura de animales y plantas. Utilizamos aqu la misma palabra como una herramienta para extraer componentes de una imagen que sean tiles en la representacin y descripcin de la forma de una regin, tales como contornos, esqueletos y cerco convexo. 8) Erosin Los tonos blancos de una imagen binarizada se cambian por negros, si estos tonos blancos cumplen cierta condicin de rango; obtenindose as, una disminucin de los tonos blancos. El rango definido aqu es de [1..8]

Imagen original 2.4. Procesamiento de Histograma

Erosin de la imagen

El histograma de una imagen es la representacin del nmero de pxeles que posee un determinado nivel de gris. Las funciones de mejora de la imagen basadas en el histograma son la ecualizacin y la especificacin del histograma. En la ecualizacin del histograma, el objetivo es obtener en la imagen de salida un histograma uniforme, mientras que en la especificacin del histograma se fuerza a la imagen de salida a tener un determinado histograma. Otra aplicacin del histograma es como herramienta de anlisis de imgenes. 28

Como una introduccin al funcionamiento del procesamiento de un histograma para el realce de una imagen, considere las siguientes figuras donde se muestran tres caractersticas bsicas de niveles de gris: oscuro, claro y bajo contraste. El lado derecho de la figura muestra los histogramas correspondientes a estas imgenes.

Fig. 2.10 Imagen oscura En la figura 2.9. se puede observar que es una imagen muy oscura en la que es difcil discernir su contenido. A partir del histograma se comprueba que, todos los pxeles presentan niveles de gris bajos (cercanos al negro), pero no todos son iguales.

Fig. 2.11 Imagen clara Fig 2.10 Se observa una imagen clara, a partir del histograma se comprueba que todos los pixeles presentan niveles de gris altos (cercanos al blanco), pero no todos son iguales.

Fig. 2.12 Imagen bajo contraste En la figura 2.11, se observa una imagen con bajo contraste, a partir del histograma se comprueba que todos los pxeles presentan niveles de gris nivelados, pero nos todos son iguales.

29

Fig. 2.13 Tres tipos bsicos de imgenes : oscura, clara, bajo contraste y sus correspondientes histogramas.

2.5. Aplicaciones del procesamiento digital de imgenes


El campo de aplicacin del tratamiento de imagen lo constituye la visin artificial. Entre las principales aplicaciones destacan las siguientes: Reconocimiento de caracteres: Detectar la posicin de un texto dentro de una imagen e identificar su contenido es til para la identificacin automtica de matriculas de coches, lectura de cdigos postales de cartas para su clasificacin, lectura automtica de textos (incorporando un convertidor texto-voz), etc. Aplicaciones de seguridad Identificacin de personas a partir de sus huellas dactilares o una imagen de su cara, validacin de firmas de cheques, comprobacin de la identidad del autor de un determinado texto manuscrito, etc. Aplicaciones industriales: Deteccin de fallos en piezas, ausencia de etiquetado en productos, etc. Aplicaciones medicas: Deteccin de tumores, recuento de clulas sanguneas, espermatozoides, etc, medidas de tamao y forma de rganos, anlisis de cromosomas. Cartografa: Realizacin de mapas a partir de fotografas, medida de distancias por carretera a partir de mapas, etc. Guiado de vehculos: Deteccin de obstculos, destinos, etc., para modificar la trayectoria del vehculo guiado de forma adecuada.

30

CAPITULO 3

DISEO DEL SISTEMA PARALELO PARA EL PROCESAMIENTO DIGITAL DE IMGENES


3.1. DESCRIPCIN GENERAL
Se disear un Sistema en el que se involucran dos reas: Procesamiento Digital de Imgenes (PDI) y Procesamiento Paralelo (PP). El procesamiento paralelo es para reducir el tiempo utilizado en el procesamiento de imgenes. El sistema de procesamiento paralelo para el procesamiento de imgenes digitales (SPPPID) efectuara una gran cantidad de filtros (negativo, binarizacion, rotacin 180, borde en x , erosin, etc) sobre una imagen. Para el procesamiento paralelo se cuenta con una tarjeta Fast-9, la cual contiene una red de procesadores transputer T800 configurados linealmente, es decir, si el transputer root enva datos al transputer 4, estos datos deben pasar primero por el transputer 2 y 3. El proceso de regresar datos del transputer 4 al transputer root es similar, solo cambia el sentido de envo y recibimiento. Cada transputer tendr una cuarta parte de la imagen original y cada uno aplicar el filtro a su respectiva subimagen. Se calcular el tiempo de comunicacin, de procesamiento y total. El tiempo de procesamiento se calcula cuando a una imagen se le aplica un filtro. El tiempo de comunicacin mide el tiempo que tarda en enviarse y recibirse los datos. El tiempo total no es mas que la suma del tiempo de comunicacin y el tiempo de procesamiento. De esta manera se calculara el tiempo de ejecucin en uno, dos, tres y cuatro transputers. Demostrando que en uno, dos y tres transputers el tiempo es mas lento comparado con el tiempo calculado con cuatro transputers. En este captulo se presentan dos diseos, uno sobre el funcionamiento general del sistema y, el segundo, muestra el diseo del sistema tomando en cuenta la arquitectura de la tarjeta Fast-9 siendo este ultimo, l diseo que permitir la implementacin.

3.2 DIAGRAMA GENERAL DEL SISTEMA


El sistema se divide en dos grandes componentes: la interfaz de usuario y el sistema de procesamiento paralelo para el procesamiento de imgenes digitales (SPPPID). En la figura 3.1, la interfaz le enva una imagen y un filtro al SPPPID elegidos por el usuario; ste recibe la imagen original y la procesa aplicndole el filtro. Finalmente, el SPPPID enva la imagen procesada a la interfaz para ser mostrada al usuario

31

Interfaz de Usuario

Imagen original + filtro SPPPID Imagen procesada Fig. 3.1 Diagrama general

El objetivo de la interfaz es proporcionarle al usuario un medio de comunicacin con el SPPPID; de tal manera que le permita elegir un filtro para aplicrselo a una imagen de su inters y mostrarle el resultado. Por su parte, el SPPPID, tiene como finalidad procesar la imagen aplicando el filtro elegido.

3.3 DISEO DEL FUNCIONAMIENTO GENERAL DEL SISTEMA


3.3.1 Diseo de la interfaz de usuario del SPPPID El entorno que permite la interaccin entre el usuario y el sistema esta formado por los mdulos que se muestran en la figura 3.2.

SPPPID

Archivo

Filtros Puntuales

Filtros Regionales

Filtros Geomtricos

Filtros Morfolgicos

Fig 3.2 Mdulos del SPPPID El modulo Archivo tendr operaciones como: Abrir, Guardar y Salir. Tal como se muestra en la Figura 3.3

32

ARCHIVO

Abrir

Guardar

Salir

Fig 3.3 Men Archivo La opcin Abrir Abre una imagen almacenada en un archivo. La opcin Guardar Guarda los cambios en el archivo donde se abre la imagen. La opcin Salir permitir salir del Programa Principal Los mdulos correspondientes a Filtros Puntuales, Filtros Regionales, Filtros Geomtricos y Filtros Morfolgicos, ofrecen al usuario algoritmos propios de estas categoras para el procesado de la imagen. 3.3.2 Diseo del Sistema de Procesamiento Paralelo para el Procesamiento Digital de Imgenes (SPPPID) Diseo General (nivel 0) Sistema de Procesamiento Paralelo para el Procesamiento de Imgenes Digitales (SPPPID) Fig. 3.4 Diagrama General Donde se puede ver que consta de tres partes, la primera es una imagen tipo Bitmap; la segunda es el SPPPID y la tercera es la imagen filtrada. El SPPPID recibe la imagen Bitmap y la procesa, es decir, le aplica el filtro elegido por el usuario, obteniendo de esta manera, una nueva imagen con las caractersticas propias del filtro.

Imagen

Imagen Procesada

33

Diseo nivel 1 (Algoritmo fundamental del sistema).

Imagen Original

SPPPID I1 I2 I3 I4

Divisin de imagen en 4 subImagenes

Proceso 1

Proceso 2

Proceso 3

Proceso 4

IP1 IP2 IP3 IP4

unin de subImagenes procesadas

Imagen Procesada Fig. 3.5 Descripcin del SPPPID Algoritmo: 1. Recibir imagen original proveniente de interfaz de usuario. 2. Dividir la imagen en 4 partes, es decir, en 4 subimagenes (I1, I2, I3, I4). 3. Enviar a cada uno de los procesos paralelos la subimagen correspondiente. 4. Cada proceso aplicar a su respectiva subimagen el filtro elegido por el usuario. 5. Cada proceso devuelve la subimagen procesada (IP1, IP2, IP3, IP4). 6. Unir, ordenadamente, las subimagenes para formar la imagen completa procesada. 7. Enviar la imagen procesada a la interfaz de usuario.

34

Diseo nivel 2. Del algoritmo descrito anteriormente, se observa claramente, que existen pasos que, por su naturaleza, deben ser realizados por un proceso principal (bien llamado proceso de control).

SPPPID

Proceso Principal

Proceso1

Proceso2

Proceso3

Proceso4

Fig. 3.6 Funciones de Proceso Principal El proceso principal se encargar de recibir la imagen proveniente de la interfaz de usuario, as como de dividirla y enviarla a los procesos para, finalmente, recibir las subimagenes procesadas y formar la imagen que ser devuelta a la interfaz como resultado. Diseo nivel 3. Bsicamente, un proceso realiza tres tareas. Recibe la subimagen proveniente de proceso principal, le aplica el filtro y enva la subimagen procesada al proceso principal.

SPPPID

Proceso Principal

Recibir subimagen Aplicar Filtro Enviar subimagen Proceso1

Recibir subimagen Aplicar Filtro Enviar subimagen Proceso2

Recibir subimagen

Recibir subimagen

Aplicar Filtro Aplicar Filtro Enviar subimagen Enviar subimagen Proceso3 Proceso4

Fig. 3.7 Funciones de cada proceso

35

3.4 DISEO FINAL DEL SISTEMA A PARTIR DE LA ARQUITECTURA DE LA TARJETA FAST-9


PC

HOST 0

0 2 ROOT 0 T1 3 1 0 T2

1 2 3 0 T3

1 2 3 0 T4

1 2

Fig. 3.8 Topologa de la tarjeta Fast-9 con la PC Tomando en cuenta las caractersticas de la tarjeta Fast-9 y el diseo que se muestra en la figura 3.6, el diseo final para el SPPPID es el siguiente:
PC

HOST 0 I I* 0 0 Proceso 1 Principal + Proceso 1

I*

Pantalla

Proceso 2

Proceso 3 T3

Proceso 4 T4

T1 T2 I simboliza a la imagen original I* simboliza a la imagen procesada Fig. 3.9 Diseo Final

Debido a las caractersticas de la Tarjeta Fast-9, el proceso principal tendr dos tareas que realizar: sus funciones definidas de control y, adems, actuar como el proceso1, es decir, tendr que procesar una cuarta parte de la imagen. La ejecucin del proceso principal se explica ms adelante. Como la arquitectura de la tarjeta Fast-9 implica una comunicacin lineal entre transputers, la secuencia para que el proceso principal le enve al proceso 4 sus datos es como sigue: 1.- Proceso principal le enva a proceso2 los datos para el proceso4 2.- Proceso2 le enva a proceso3 los datos para el proceso4. 36

3.- Finalmente, Proceso3 le enva a proceso4 sus datos. Para que proceso principal reciba los datos de proceso4 se sigue una secuencia parecida a la anterior, es decir, proceso4 regresa a proceso3 sus datos, proceso3 regresa a proceso2 los datos de proceso4, finalmente proceso2 regresa a proceso principal los datos de proceso4. De manera anloga sucede el envo y el recibimiento de datos para el proceso2 y proceso3. El motivo de que el orden de recibimiento de datos sea proceso4, proceso3, y proceso2 es debido a la distancia a la que se encuentran el tranputer4, tranputer3, y tranputer2, del transputer root que es donde se aloja el proceso principal. Proceso principal se encuentra alojado en el Transputer 1 (T1). Proceso2, 3 y 4 se alojan en los transputers T2, T3 y T4, respectivamente. Explicacin de figura 3.9 1.- Proceso principal recibe imagen original y la divide en 4 subimagenes 2.- Proceso principal enva a proceso4 la subimagen respectiva. 3.- Proceso principal enva a proceso3 la subimagen respectiva. 4.- Proceso principal enva a proceso2 la subimagen respectiva. 5.- Proceso principal procesa su subimagen 6.- Cada proceso, en paralelo, aplica el filtro a la subimagen 7.- Cada proceso enva las subimagenes procesadas a proceso principal. 8.- Proceso principal recibe las subimagenes procesadas de proceso2, proceso3 y proceso4 y junto con su subimagen procesada, las une, formando la imagen completa. 9.- Proceso principal enva imagen procesada a la pantalla. La figura 3.10 muestra con detalle los procesos y los canales de comunicacin.
PC HOST
0 afserver 0

I *

Pantalla

0 I
0

I*
0 1 0 Proceso2 0 1 1 0 Proceso3 0 1

0
filter 0 1 1 11 2 ProcesoP

1
2

Proceso4 0

ROOT

T1

T2

T3

T4

Nota: ProcesoP = Proceso Principal + Proceso1 Fig. 3.10 Diseo final. Se muestran todos los procesos de la Fast-9 Las flechas rectas representan las conexiones fsicas entre los transputers Las flechas curvas representan las conexiones lgicas entre los transputers

37

Tiempo t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11

Transputer1
envo de subimagen 4

Transputer2
recepcin de subimagen 4

Transputer3 INACTIVO
recepcin de subimagen 4

Transputer4 INACTIVO INACTIVO


recepcin de subimagen 4

T1 T2 INACTIVO
envo de subimagen 3

T2 T1
envo de subimagen 4

T2 T3
recepcin de subimagen 3

T3 T2
envo de subimagen 4

T1 T2 INACTIVO
envo de subimagen 2

T2 T1
envo de subimagen 3

T3 T4
recepcin de subimagen 3

T4 T3 TRABAJA TRABAJA TRABAJA INACTIVO INACTIVO


envi de subimagen 4

T2 T3
recepcin de subimagen 2

T3 T2 TRABAJA TRABAJA INACTIVO


envi de subimagen 3

T1 T2 TRABAJA
recepcin de subimagen 2

T2 T1 TRABAJA
envo de subimagen 2

T1 T2 INACTIVO
recepcin de subimagen 3

T2 T1
recepcin de subimagen 3

T2 T3
envo de subimagen 3

T3 T2
recepcin de subimagen 4

T1 T2 INACTIVO
recepcin de subimagen 4

T2 T1
recepcin de subimagen 4

T3 T4
envo de subimagen 4

T4 T3 INACTIVO INACTIVO

T2 T3
envo de subimagen 4

T3 T2 INACTIVO

T1 T2

T2 T1

Fig. 3.11 Tabla que muestra el envo y recibimiento de datos en cada transputer

38

3.5. Estructura de datos para manipular los pxeles de la imagen.


Se utilizar una estructura de datos vectorial en la cual se almacenan los pxeles de la imagen, teniendo en cuenta que la imagen estar en escala de grises, cada celda del vector tendr nicamente un canal (b=azul). En la Figura 3.12 se muestra la representacin grfica de una imagen que originalmente esta en forma matricial con sus canales respectivos, en forma vectorial y por ltimo en forma de vector donde cada celda almacena un canal (b).
. . . . . . . .
rn gn bn

r1 g1 b1 r2 g2 b2 r3 g3 b3

r1 g1 b1 r2 g2 b2 r3 g3 b3

b) Representacin vectorial . . . . . . . . . . . .

. . . . . . .

rn gn bn

b1 b2 b3

. . . . . . . . . . . . . . . . .

bn

a)

Representacin matricial.

c)

Representacin vectorial almacenando un canal

Fig. 3.12 Estructuras de datos para almacenar los pxeles de una imagen. Bsicamente, el almacenamiento de los datos de la imagen dentro del vector se ilustra en la siguiente figura.

1 fila de datos

2 fila de datos

................

Ultima fila de datos

Vector de longitud N=ancho*alto

Fig. 3.13 Estructura de datos para procesar la imagen. Cada fila de la imagen se almacena una despus de otra dentro del vector. Cada fila tiene una longitud del ancho de la imagen, de esta manera, el tamao del vector es de N = ancho columnas * alto filas de la imagen. As pues, la primera fila de la imagen se almacena a partir de la celda 0 y finaliza en la celda ancho-1; la segunda fila inicia en la celda ancho y termina en la celda (ancho+ancho)-1, es decir, 2*ancho-1, y as sucesivamente hasta almacenar la ultima fila a partir de la celda (alto-1)*ancho y terminar en la celda alto*ancho-1 . A continuacin se detalla la representacin de las columnas y filas de la imagen dentro del vector.

39

Columnas (ancho) an = ancho al = alto

Filas (alto)

1 fila de datos 0 1

2 fila de datos 2*an-1

...............

Ultima fila de datos (al-1)*an (al*an)-1

an-1 an an+1

Fig. 3.14 Estructura de datos detallada. Es claro que la distancia entre la celda 0 y la celda an es el ancho de la imagen, as como tambin, ancho es la distancia entre la celda 1 y la celda an+1. Esto es importante tomar en cuenta cuando se trabaja con un filtro regional.
i,j Representan un pxel de la imagen matricial i - fila j - columna
i-1,j-1 i-1,j i,j-1 i,j i-1,j+1 i,j+1

i Representan un pxel de la imagen dentro del vector k - ancho de la imagen

i+1,j-1 i+1,j i+1,j+1

a) Regin Matricial

i-k-1

i-k

i-k+1

i-1

i+1

i+k-1

i+k i+k+1

a) Regin Vectorial

Fig. 3.15 Vecinos del pxel central dentro de una regin 3x3.

3.6. ALGORITMOS PRINCIPALES


Descripcin de las variables utilizadas en los algoritmos ancho alto v va N Nmero de columnas de la imagen Nmero de filas de la imagen Vector de datos de la imagen. Vector de trabajo Vector auxiliar de v. En algunos filtros almacenara los resultados para posteriormente asignrselos al vector de trabajo. Tamao del vector. N=ancho*alto 40

i j

La variable i hace referencia a la i-sima celda del vector. Cuando i se utiliza con la variable j, cada una en su bucle, i hace referencia a la i-sima fila del vector. La variable j hace referencia a la j-sima columna del vector.

3.6.1 Algoritmos orientados al punto


3.6.1.1 Negativo Descripcin Sea x igual al tono gris t de un pxel de la imagen I, entonces el negativo de t se puede hallar como: x= ~ t Este proceso es claro de entender para una imagen en escala de grises, pues en ella los valores para un pxel sern nicamente x = {0..255}, de donde las transiciones sern : 0->255, 1->254, 2->253, ..., 254->1, 255->0. De donde un tono en 0 (negro) se transformara en 255 (blanco) y viceversa. Algoritmo: Negativo 1.- Para i 0 hasta N-1 hacer 1.1 v[i] not v[i] Fin {Para i} Explicacin del cdigo Proceso: En 1 y 1.1, para cada i-celda del vector de datos se le asigna la negacin de su tono utilizando el operador de negacin not. 3.6.1.2 Binarizacin Descripcin: La imagen es convertida en una imagen binaria en la cual aparecen solo los tonos blanco (255) y negro (0). Se define un tono medio (128) y todos los tonos menores a l se convierten en negro; en caso contrario, los tonos se convierten en blanco. Algoritmo: Binarizacin 1.- Para i 0 hasta N-1 hacer 1.1 Si v[i]<128, entonces 1.1.1 v[i] 0 {negro} si no, 1.1.2 v[i] 255 {blanco} Fin {Para i}

41

Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 1.1.1 y 1.1.2, si v[i] es menor que el tono medio (128) se le asigna negro; si no, el nuevo tono ser blanco. 3.6.1.3 Aclarar Descripcin Cada tono de la imagen se incrementa en t tonos acercndose al blanco (255), obtenindose as una imagen mas clara. Un caso particular es cuando t es igual a 100. Ningn resultado debe ser mayor que el limite 255; en caso de que esto suceda, el resultado se ajusta a 255. Algoritmo: Aclarar 1.- Para i 0 hasta N-1 hacer 1.1 v[i] v[i]+100 1.2 si v[i]>255, entonces v[i] Fin {Para i}

255

Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 1.1 se incrementa el tono de v[i] en 100, y si resulta mayor que 255 se le asigna el tono blanco (1.2). 3.6.1.4 Obscurecer Descripcin Cada tono de la imagen se decrementa en t tonos acercndose al negro (0), obtenindose as una imagen mas obscura. Un caso particular es cuando t es igual a 50. Algoritmo: Obscurecer 1.- Para i 0 hasta N-1 hacer 1.1 v[i] v[i]-50 1.2 si v[i]<0, entonces v[i] Fin {Para i}

Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin:

42

En 1.1 se decrementa el tono de v[i] en 50 y si resulta menor que 0 se le asigna el tono negro (1.2).

3.6.2 Algoritmos orientados a la regin


3.6.2.1 Borde en X Descripcin Resalta los bordes en direccin horizontal (x) de una imagen. Algoritmo: Borde en X 1.- Para i 1 hasta N-1 hacer 1.1 va[i] | v[i]- v[i-1] | Fin {Para i} 2.- Para i 1 hasta N-1 hacer 2.1 v[i] va[i] Fin {Para i} Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 1.1 a va[i] se le asigna el valor absoluto de la diferencia entre su tono y el tono de la celda izquierda. Se inicia desde la celda 1 ya que la celda 0 no tiene celda a la izquierda para procesarse. Finalmente, en 2 y 2.1, a vector v se le asigna el vector resultado va. 3.6.2.2 Promedio Descripcin Tiene por objetivo principal eliminar aquellos elementos que presenten ruido en la imagen, suavizando de esta forma la imagen. Algoritmo: Promedio cfs celdas de la fila superior cfc celdas de la fila central cfi celdas de la fila inferior 1.- Para i ancho+1 hasta N-ancho-2 hacer 1.1 cfs v[i-ancho-1] + v[i-ancho] + v[i-ancho+1] 1.2 cfc v[i-1] + v[i] + v[i+1] 1.3 cfi v[i+ancho-1] + v[i+ancho] + v[i+ancho+1] 1.4 va[i] ( cfs + cfc + cfi ) / 9 Fin {Para i} 2.- Para i ancho+1 hasta N-ancho-2 hacer

43

2.1 v[i] va[i] Fin {Para i} Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 1.1 se calcula la suma de las celdas de la fila superior (vecinos de arriba). En 1.2 se calcula la suma de las celdas de la fila central (vecinos de la misma fila). En 1.3 se calcula la suma de las celdas de la fila inferior (vecinos de abajo). En la lnea 1.4, a va[i] se le asigna la suma de sus 9 celdas vecinas (incluyndose ella misma) dividida entre su peso, que en este caso es (9), obteniendo de esta manera el promedio. Finalmente en 2 y 2.1, a vector v se le asigna el vector resultado va. 3.6.2.3 Sobel Descripcin: Remarca los bordes de una imagen utilizando los operadores gradiente en X (direccin horizontal) y Y (direccin vertical). Peso=1 1.- sobel1 { -1, 0, 1, -2, 0, 2, -1, 0, 1 } 2.- sobel2 { -1, -2, -1, 0, 0, 0, 1, 2, 1 } 3.- Para i ancho+1 hasta N-ancho-2 hacer 3.1 s1 convolucion(peso, sobel1, regin de i) 3.2 s2 convolucion(peso, sobel2, regin de i) 3.3 si s1 > 255 entonces s1 255 3.4 si s1 < 0 entonces s1 0 3.5 si s2 > 255 entonces s2 255 3.6 si s2 < 0 entonces s2 0 3.7 si s1<s2 entonces, 3.7.1 va[i] s2 si no, 3.7.2 va[i] s1 Fin {Para i} 4.- Para i ancho+1 hasta N-ancho-2 hacer 4.1 v[i] va[i] Fin {Para i} Explicacin del cdigo Proceso: En 1 y 2 se definen las dos mascaras de sobel En 3 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 3.1 se calcula la convolucin de la regin de i con la mascara de sobel 1 asignndose el resultado a s1; de forma similar se calcula s2 (3.2). De 3.3 hasta 3.6 se ajustan los valores s1 y s2 al intervalo {0..255}

44

En 3.7 se asigna a va[i] el valor mximo de s1 y s2. Finalmente en 4 y 4.1, a vector v se le asigna el vector resultado va.

3.6.3 Algoritmos orientados a la geometra


3.6.3.1 Reflexin en x Descripcin: No se modifica el rengln de cada pxel de la imagen y se invierten las columnas. Se invierte la posicin de las columnas sin modificar la posicin de las filas de la imagen. Algoritmo 1.- Para j 0 hasta ancho-1 hacer 1.1 jp ancho-j-1 1.2 Para i 0 hasta N-ancho 1.2.1 va[i+jp] v[i+j] 1.2.2 incrementa i en ancho Fin {Para i}1 Fin {Para j} 2.- Para i 0 hasta N-1 hacer 2.1 v[i] va[i] Fin {Para i} Explicacin del cdigo Proceso: En 1 y 1.2 se ejecutan los ciclos que procesan a cada pxel de la imagen, como se describe a continuacin: 1.1 calcula la nueva posicin de la columna j, es decir, a jp se le asigna la reflexin en X de la columna j. 1.2.1 Asignar a vector resultado en la posicin reflexionada el valor de la posicin original del vector de trabajo. Finalmente en 2 y 2.1, a vector v se le asigna el vector resultado va. 3.6.3.2 Rotacin 180 Descripcin: Se invierte la posicin de las columnas y las filas de la imagen. Algoritmo 1.- Para i 0 hasta N-1 hacer 1.1 ip N-i-1 1.2 va[ip] v[i] Fin {Para i} 2.- Para i 0 hasta N-1 hacer 2.1 v[i] va[i] Explicacin del cdigo Proceso: En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin:

45

1.1 Calcula en ip la posicin invertida de la celda i 1.2 Asigna a vector resultado en su celda ip el valor de v en la posicin i Finalmente en 2 y 2.1, a vector v se le asigna el vector resultado va. 3.6.3.3 Ampliacin Isomtrica Descripcin: Amplia el tamao de la imagen al doble reproduciendo cada pxel 3 veces formando un pxel liso que ocupa una regin de 2x2. Algoritmo 1.- Para j 0 hasta ancho-1 hacer 1.1 jp 2*j 1.2 jvd jp+1 1.3 Para i 0 hasta N-ancho hacer 1.3.1 ip i*4 1.3.2 iva ip+(ancho*2) 1.3.3 va[ip+jp] v[i+j] 1.3.4 va[ip+jvd] v[i+j] 1.3.5 va[iva+jp] v[i+j] 1.3.6 va[iva+jvd] v[i+j] Fin {Para i} Fin {Para j} 2.- Para j 0 hasta (N*4)-1 hacer 2.1 v[j] va[j] Explicacin del cdigo Proceso: En 1 y 1.3 se ejecutan los ciclos que procesan a cada pxel de la imagen, como se describe a continuacin: En 1.1 y 1.2 se obtiene en jp y jvd la nueva posicin de las columnas de la imagen ampliada. En 1.3.1 y 1.3.2 se obtiene en ip e iva la nueva posicin de las filas de la imagen ampliada. 1.3.3, 1.3.4, 1.3.5 y 1.3.6 representan la regin ampliada de 2x2 a la cual se le asigna el pxel de la imagen original. Finalmente en 2 y 2.1, a vector v se le asigna el vector resultado va(imagen ampliada).

3.6.4 Algoritmos morfolgicos


3.6.4.1 Erosin Descripcin: Los tonos blancos de una imagen binarizada se cambian por negros, si estos tonos blancos cumplen cierta condicin de rango; obtenindose as, una disminucin de los tonos blancos. Algoritmo Condicin de rango: 1.- Para cada p posicin vecina de i (incluyendo i) hacer 1.1 si v[p] = 255, entonces se incrementa contador en 1 2.- Se decrementa contador en 1

46

3.- Si mnimo <= contador y contador<= mximo, entonces condicin de rango es verdadero. Erosin: 1.- Para i ancho+1 hasta N-ancho-2 hacer 1.1 si v[i] = 255, 1.1.1 si las celdas vecinas de v[i] cumplen la condicin de rango, entonces va[i] 0; en caso contrario va[i] v[i]. 1.1.2 en caso contrario va[i] v[i]. 2.- Para i ancho+1 hasta N-ancho-2 hacer 2.1 v[i] va[i] Explicacin del cdigo Proceso: Condicin de rango En 1 y 1.1 contador obtiene el numero de celdas de la regin de 3x3 que contengan tonos blancos (incluyendo la celda v[i]). En 2 se decrementa contador en 1 excluyendo de esta manera al pxel central v[i] Finalmente en 3 si el numero de vecinos blancos (contador) de v[i] estn dentro del intervalo definido por el valor mnimo y mximo, la condicin de rango se cumple. Observacin: mnimo y mximo son cualquier valor definido en [1..8], respectivamente. Erosin En 1 se inicia el ciclo que procesa a cada pxel de la imagen, como se describe a continuacin: En 1.1 si v[i] es blanco se ejecuta 1.1.1 si no el valor de la celda no se modifica (1.1.2) 1.1.1 analiza si las celdas vecinas de v[i] cumplen la condicin de rango; de ser as, a va[i] negro; en caso contrario el valor de la celda no se modifica. Finalmente en 2 y 2.1, a vector v se le asigna el vector resultado va.

47

CAPITULO 4
IMPLEMENTACIN DEL SISTEMA
4.1 ESTRUCTURA GENERAL DEL SISTEMA DE PROCESAMIENTO PARALELO PARA EL PROCESAMIENTO DE IMGENES DIGITALES El SPPPDI se implement utilizando como software: el lenguaje C y windows 98; y como hardware: la tarjeta Fast9 y una PC. Las caractersticas de este lenguaje de alto nivel permiten manejar las funciones estndar del ANSI C, ambiente grafico, y lo ms importante es que incorpora funciones que permiten el procesamiento paralelo de datos entre los transputers de la tarjeta Fast 9.
El sistema se compone funcionalmente de los siguientes mdulos: 1. Interfaz de usuario. 2. Seleccin de archivo bitmap y filtro. 3. Apertura de imagen bitmap. 4. Obtencin de la estructura de datos de la imagen. 5. Visualizacin de imagen original. 6. Divisin de imagen. 7. Envo de subimagenes a transputers. 8. Recepcin de subimagenes en cada transputers. 9. Procesamiento de subimagenes en cada transputers. 10. Unin de subimagenes procesadas. 11. Visualizacin de imagen procesada. 12. Guardado de Imagen procesada. De donde, estos mdulos, siguen el flujo de datos que se muestra a continuacin:
INICIO

INTERFAZ DE USUARIO

LEE COMANDO

48

COMANDO = ESC

SI

FIN

NO

SELECCIN DE ARCHIVO BITMAP Y FILTRO NO

EXISTE ARCHIVO?

SI

APERTURA DE IMAGEN BITMAP

OBTENCIN DE LA ESTRUCTURA DE DATOS DE LA IMAGEN

VISUALIZACION DE IMAGEN ORIGINAL

DIVISIN DE IMAGEN

ENVIO DE SUBIMAGENES A TRANSPUTERS

49

1 RECEPCIN DE SUBIMAGENES EN CADA TRANSPUTER

PROCESAMIENTO DE SUBIMAGENES EN CADA TRANSPUTERS

UNION DE SUBIMAGENES PROCESADAS

VISUALIZACION DE IMAGEN PROCESADA

GUARDAR IMAGEN?

NO

SI

GUARDADO DE IMAGEN PROCESADA

INTERFAZ DE USUARIO

4.2 DETALLE DEL SISTEMA 4.2.1. Interfaz de usuario


Aqu se muestra el titulo del programa, filtros que ofrece el sistema, un espacio para escribir el nombre del archivo de la imagen que se desee procesar. Este mdulo utiliza las siguientes funciones, entre otras: int pantalla1(); Pinta la interfaz de usuario. int titulos(); Escribe el nombre del programa. int f_puntuales(); Escribe los nombres de todos los filtros puntuales. int f_regionales(); Escribe los nombres de todos los filtros regionales. Adems, se utilizan las funciones, cuadro y lnea para trazar el rea de la interfaz.

50

4.2.2. Seleccin de archivo bitmap y filtro Obtiene el nombre del archivo bitmap que se desea procesar, almacenndolo en la variable nI. OpFiltro almacena un carcter que representa al filtro que se quiere aplicar. Funciones que intervienen:
int leeCad(char s[], int x, int y); Char lee(); Lee y escribe en pantalla una cadena de caracteres a partir de la columna x y fila y. Devuelve la cadena leida en la variable s. Devuelve un carcter leido.

4.2.3. Apertura de imagen bitmap


El archivo bitmap almacena toda la informacin referente a una imagen tal como el alto, ancho, profundidad de bits, tabla de colores, pxeles de la imagen, etc. (vase Apndice A). Dicha informacin se almacena en una estructura de datos que permite una fcil manipulacin de la imagen. struct bmp{ struct bmpEncabezadoArchivo EA; struct bmpEncabezadoInfoImagen EII; struct RGB paleta[256]; grises) byte datImg[tamaoImagen]; imagen }; struct bmp BitMap; l Estructura del bitmap Informacin del archivo Informacin de la imagen Paleta de 256 colores (256 tonos pxeles (rgb) que componen a la Variable de tipo bmp para manipular archivo de la imagen La funcin int abrir_BMP(char nI[]); abre el archivo bitmap indicado por el usuario en nI y almacena la informacin en la estructura descrita anteriormente.

4.2.4. Obtencin de la estructura de datos de la imagen


Cuando se abre un archivo bitmap, cada uno de los rgbs de los pxeles que representan a la imagen se almacenan en la estructura de datos Bitmap.datImg. Dado que se manejan imgenes de 256 niveles de gris solo es necesario trabajar con un canal como puede ser el azul (b). Por lo tanto, del vector BitMap.datImg se tomaron los canales azules para formar con estos el vector de trabajo datImg. Es en esta estructura de datos donde se aplicaron los filtros digitales a los pxeles de la imagen. v_ancho, v_alto t_vector int copiarBMP(); Representan las dimensiones de la imagen (ancho y alto) Tamao total del vector datImg. (t_vector=v_ancho+v_alto) Realiza el copiado del vector BitMap.datImg al vector datImg asignndole los canales azules.

4.2.5. Visualizacin de imagen original


En este modulo se prepara el ambiente grafico para realizar el pintado de la imagen.

51

Se utiliza el modo grafico 19, el cual permite una configuracin de la pantalla de 320 x 200 pxeles y 256 colores.
int modoGrafico(byte modo, int x1, int y1, int x2, int y2); Establece el modo grafico y define un rea de trabajo. La funcin void paletaColores(struct RGB p[]); establece la paleta de colores a utilizar. La funcin int pintarBMP(int x, int y, int al, int an); pinta la imagen pxel por pxel a partir de la columna x y fila y tomando en cuenta las dimensiones de la imagen (al, an).

4.2.6. Divisin de imagen


A los vectores datImg1, datImg2, datImg3 y datImg4 se les asigna una cuarta parte del vector datImg, dividiendo de esta manera los datos de la imagen en 4 subimagenes. Estos vectores son el rea de trabajo para cada transputer y, adems cuentan con la caracterstica de que su tamao es igual a la mitad de v_ancho por la mitad de v_alto. Este valor es asignado a p_vector el cual representa el tamao total de cada subvector. Se emplea la siguiente funcin: int divImg();

4.2.7. Envo de subimagenes a transputers


El envi de subimagenes a cada uno de los transputers (T2, T3, T4) se realiz mediante la siguiente funcin de envi de mensajes. chan_out_message(t,datos,c); la cual significa que se estn enviando datos de longitud t por el canal c. (datos) Datos puede ser cualquier vector (datImg2, datImg3 o datImg4). 4.2.8. RECEPCIN DE SUBIMAGENES EN CADA TRANSPUTERS. Cada transputer recibe su cuarta parte de la imagen a travs de la funcin chan_in_message(t,datos,c); la cual recibe datos de tamao t por el canal c. De igual modo, datos puede ser cualquier vector (datImg2, datImg3 o datImg4). 4.2.9. PROCESAMIENTO DE SUBIMAGENES EN CADA TRANSPUTER. Cada subimgen alojada en cada uno de los transputers procesa el filtro elegido por el usuario. Se calcula el tiempo de procesamiento, tiempo total y tiempo de comunicacin nicamente en el transputer 1 debido a que es el programa principal. El tiempo de procesamiento se calcul en cada uno de los filtros. Para el calculo del tiempo total se toma el tiempo antes de enviar subimagenes a transputers y despus de recibir subimagenes procesadas. El tiempo de comunicacin se obtuvo restando tiempo total tiempo de procesamiento. La funcin timer_now(); devuelve un numero (en segundos) que representa el tiempo del procesador.

El siguiente bloque de cdigo realiza el procesamiento del filtro.


switch(opFiltro){ case 'a': negativo(); break; case 'b': aclarar(); break; case 'c': obscurecer(); break; .

52

. . case 'w': aiso(); alto=alto*2; ancho=ancho*2; p_vector=ancho*alto; break; case 'x': dilero(0); break; case 'y': dilero(255); break; }

4.2.10. Unin de subimagenes procesadas


Los vectores datImg1, datImg2, datImg3, datImg4, que contienen los datos de las subimagenes procesadas en cada transputer son asignadas al vector de trabajo datImg uniendo de esta manera las subimagenes procesadas. Se emplea la funcin int unirImg(byte img1[parte], byte img2[parte], byte img3[parte], byte img4[parte]);. Comnmente el llamado de esta funcin es como sigue: unirImg(datImg1, datImg2, datImg3, datImg4);

El orden para unir las subimagenes procesadas y se muestren correctamente varia en los siguientes filtros.
Reflexin en X Reflexin en Y Rotacin +90 Rotacin -90 Rotacin 180 unirImg(datImg2, datImg1, datImg4, datImg3); unirImg(datImg3, datImg4, datImg1, datImg2); unirImg(datImg2, datImg4, datImg1, datImg3); unirImg(datImg3, datImg1, datImg4, datImg2); unirImg(datImg4, datImg3, datImg2, datImg1);

4.2.11. Visualizacin de imagen procesada


Se realiza el mismo proceso que para la visualizacin de la imagen original. La funcin int pintarBMP(int x, int y, int al, int an); pinta la imagen pxel por pxel a partir de la columna x y fila y tomando en cuenta las dimensiones de la imagen (al, an).

4.2.12 Guardado de imagen procesada


Para guardar la imagen se debe almacenar toda la informacin que se ley al abrirla (alto, ancho, profundidad de bits, tabla de colores, pxeles de la imagen, etc.) Dicha informacin se almacena en un archivo bitmap. La funcin int guardar_BMP(char nI[]); guarda el archivo bitmap indicado por el usuario en nI y almacena la informacin acerca de la imagen procesada.

4.3. ESTRUCTURAS DE DATOS Tal como se ha mencionado anteriormente, el almacenamiento de la imagen requiere de varias estructuras de datos para su mejor manipulacin. Informacin referente al archivo bitmap, a la imagen, tabla de colores, pxeles de la imagen, etc., son datos de suma importancia para el SPPPDI.
bmp campos Estructura de Datos Descripcin Almacena los datos del archivo Bitmap tipo de datos tamao

53

EA estructura EII estructura paleta[256] estructura datImg[t_img]

struct bmpEncabezadoArchivo struct bmpEncabezadoInfoImagen struct RGB byte

definido por definido por definido por t_img bytes

Estructura de Datos Descripcin BmpEncabezadoArchivo Almacena los datos del encabezado de archivo campos tipo de datos tamao tipo[2] char 2 bytes tamanho unsigned long 4 bytes reservado unsigned long 4 bytes inicio_bmp unsigned long 4 bytes Estructura de Datos Descripcin BmpEncabezadoInfoImagen Almacena los datos del encabezado de la informacin de la Imagen campos tipo de datos tamao tamanho unsigned long 4 bytes ancho unsigned long 4 bytes alto unsigned long 4 bytes planos int 2 bytes formatodeColor int 2 bytes compression unsigned long 4 bytes tamanhoImagen unsigned long 4 bytes x,y unsigned long 4 bytes coloresUsados, coloresImportantes; unsigned long 4 bytes Estructura de Datos Descripcin Almacena los canales rojo, verde y azul de cada color de campos canal[3] paleta de colores tipo de datos byte tamao 3 bytes

RGB la

Estructura de Datos Descripcin tamao datImg[t_total] Almacena un solo canal. Es el vector de trabajo t_total bytes datImg1[parte] Almacena una cuarta parte de la imagen parte bytes datImg2[parte] Almacena una cuarta parte de la imagen parte bytes datImg3[parte] Almacena una cuarta parte de la imagen parte bytes datImg4[parte] Almacena una cuarta parte de la imagen parte bytes va[parte] vector auxiliar para el vector de trabajo parte bytes va_2[t_tam_2] vector auxiliar para reduccin de imagen t_tam_2 bytes

54

4.4. DESCRIPCIN DE FILTROS A continuacin se describe el cdigo fuente de algunos filtros implementados en el SPPPDI.
Filtro Sobel: *********************************************************************
int sobel(){ 1.- int i; 2.-long s1,s2; 3.- int k=ancho; 4.- int k2=p_vector-k-1; 5.- int vconv1[9],vconv2[9]; 6.- t1=timer_now(); 7.- vconv1[0]=-1; vconv1[1]=0; vconv1[2]=1; 8.- vconv1[3]=-2; vconv1[4]=0; vconv1[5]=2; 9.-vconv1[6]=-1; vconv1[7]=0; vconv1[8]=1; 10.- vconv2[0]=-1; vconv2[1]=-2; vconv2[2]=-1; 11.- vconv2[3]=0; vconv2[4]=0; vconv2[5]=0; 12.- vconv2[6]=1; vconv2[7]=2; vconv2[8]=1; 13.- for(i=k+1;i<k2;i++) { 14.- s1=conv(1, vconv1, i, k); 15.- s2=conv(1, vconv2, i, k); 16.- s1=ajusta(s1); 17.- s2=ajusta(s2); 18.- if(s1<s2) s1=s2; 19.- va[i]=s1; } 20.- for(i=k+1; i<k2; i++) 21.- datImg1[i]=va[i]; 22.- t2=timer_now(); return 0; }

****************************************************************** Descripcin del cdigo Sobel : 1-5 6 7-12 13 14-15 16-17 Declaracin de variables locales Inicia tiempo de procesamiento Asignacin de mascaras Sobel1 y Sobel2 a variables respectivas Ciclo que recorre cada celda del subvector de trabajo Calculo de convoluciones 1 y 2 de Sobel Ajuste de resultados de convolucin menores que 0 y mayores que 255 al rango 0a 255 18-19 Finalmente, se asigna a vector auxiliar la convolucin de resultado mayor 20-21 Al subvector de trabajo se le asignan los resultados de aplicar Sobel 22 Finaliza tiempo de procesamiento

*********************************************************************

55

*********************************************************************

Filtro Mediana: *********************************************************************


int mediana(){ 1.- int i,j,x,y,c; 2.- int a,b,v2; 3.- int k=ancho; 4.- int k2=p_vector-k-1; 5.- byte vector[9]; 6.- t1=timer_now(); 7.- for (i=k+1; i<k2; i++) { 8.- vector[0]=datImg1[i-k-1]; vector[1]=datImg1[i-k]; vector[2]=datImg1[i-k+1]; 9. -vector[3]=datImg1[i-1]; vector[4]=datImg1[i]; vector[5]=datImg1[i+1]; 10.- vector[6]=datImg1[i+k-1]; vector[7]=datImg1[i+k]; vector[8]=datImg1[i+k+1]; 11.- shell_sort(vector,9); 12.- va[i]=vector[4]; } 13.- for(i=k+1; i<k2; i++) 14.datImg1[i]=va[i]; 15.- t2=timer_now(); return 0; }

****************************************************

Descripcin del cdigo Mediana: 1-4 Declaracin de variables locales 5 Declaracin de vector auxiliar para el ordenamiento de celdas 6 Inicia tiempo de procesamiento 7 Ciclo que recorre cada celda del subvector de trabajo 8-10 Asignacin de la regin 3x3 al vector de ordenamiento 11 Mediante el algoritmo Shell Sort se ordenan los datos del vector ascendentemente 12 Asignacin de la mediana a la i-sima celda del vector auxiliar 13-14 Subvector de trabajo almacena finalmente los resultados 15 Finaliza tiempo de procesamiento

****************************************************

*********************************************************************

56

Filtro Erosin: *********************************************************************


int dilero(){ 1.- int i; 2.- int k=ancho; 3.- int k2=p_vector-k-1; 4.- t1=timer_now(); 5.- for (i=k+1; i<k2; i++) 6.if(vecindad(i,de)==1) va[i]=(~de) & lowerbits; 7.else va[i]=datImg1[i]; 8.- for(i=k+1; i<k2; i++) 9.- datImg1[i]=va[i]; 10.- t2=timer_now(); return 0; } byte vecindad(){ 1.- const min=3; 2.- const max=6; 3.- int n,m,cont=0; 4.- for(n=i-ancho-1;n<=i+ancho-1;n=n+ancho) 5.for(m=0;m<3;m++) 6.if(datImg1[n+m]==de) cont++; 7.- cont--; 8.- if((min<=cont) && (cont<=max)) return 1; 9.- return 0; }

***************************************************************

Descripcin del filtro Erosin: 1-3 4 5 6-7 Declaracin de variables Inicia tiempo de procesamiento Ciclo que recorre cada celda del subvector de trabajo Si los vecinos negros de i pertenecen al rango de erosin, entonces al vector auxiliar en la celda i se le asigna el tono blanco (erosin) 8-9 El subvector de trabajo, finalmente almacena los resultados 10 Finaliza tiempo de procesamiento Este filtro utiliza la funcin vecindad que se describe a continuacin: 1-2 3 4-5 6 7 8 Constantes que definen el rango de erosin Declaracin de variables locales Ciclos que recorren las celdas vecinas de i (incluyendo i) Cuenta los vecinos negros Se descuenta la celda i ya que por omisin su tono es negro Si el numero de vecinos negros pertenece al rango de erosin, la funcin retorna el valor de 1; si no, retorna 0 57

***************************************************************

******************************************************************

Filtro Ampliacin Isomtrica: *******************************************************************


int aiso(){ 1.- int j,jp,jvd,i,ip,iva; 2.- int k2=ancho*2; 3.- int k=ancho; 4.- t1=timer_now(); 5.- for(j=0; j<k; j++) { 6.- jp=2*j; jvd=jp+1; 7.- for (i= 0; i<p_vector; i=i+k) { 8.ip=i*4; iva=ip+k2; 9.va[ip+jp]=datImg1[i+j]; 10.va[ip+jvd]=datImg1[i+j]; 11.va[iva+jp]=datImg1[i+j]; 12.va[iva+jvd]=datImg1[i+j]; } } 13.- p_vector=p_vector*4; 14.- for(j = 0; j<p_vector; j++) 15.- datImg1[j]=va[j]; 16.- t2=timer_now(); return 0; }

***********************************************************

Descripcin del filtro Ampliacin Isomtrica: 1-3 Declaracin de variables locales 4 Inicia tiempo de procesamiento 5 Ciclo que recorre las columnas de una fila 7 Ciclo que recorre las filas contenidas en el subvector 6 y 8 Obtencin de las cuatro celdas que representan la ampliacin de la i-sima celda del subvector de trabajo 9-12 A las cuatro celdas del vector auxiliar se les asigna el valor de la celda i del subvector 13 Ampliacin del tamao del subvector de trabajo 14-15 Se almacenan los resultados finales en el subvector 16 Finaliza tiempo de procesamiento

*********************************************************

******************************************************************

58

4.5. ARCHIVO DE CONFIGURACIN


Aqu se describe la configuracin que consiste en qu procesadores van a utilizarse, como estn comunicados y finalmente como se distribuye el software en el hardware. ********************************************************************
1.- processor host 2.- processor root 3.- processor p01 4.- processor p02 5.- processor p03

Descripcin: 1-5 Declaracin de procesadores. En este caso tenemos 5 procesadores (host, root, p01, p02 y p03) por lo tanto hay 5 declaraciones processor 6-9 Declaracin de las conexiones fsicas de cada transputer 10-15 Declaracin de tareas con sus canales de E/S 16-21 Asignacin de tareas a cada procesador 22-31 Asignacin de canales entre tareas

****************************************************************************

****************************************************************************

6.- wire ? host[0] root[0] 7.- wire ? root[1] p01[0] 8.- wire ? p01[2] p02[0] 9.- wire ? p02[2] p03[0] 10.- task afserver ins=1 outs=1 11.- task filter ins=2 outs=2 data=10k 12.- task x ins=3 outs=3 data=? 13.- task x2 ins=2 outs=2 data=? 14.- task x3 ins=2 outs=2 data=? 15.- task x4 ins=1 outs=1 data=? 16.- place afserver host 17.- place filter root 18.- place x root 19.- place x2 p01 20.- place x3 p02 21.- place x4 p03 22.- connect ? afserver[0] filter[0] 23.- connect ? filter[0] afserver[0] 24.- connect ? filter[1] x[1] 25.- connect ? x[1] filter[1] 26.- connect ? x[2] x2[0] 27.- connect ? x2[0] x[2] 28.- connect ? x2[1] x3[0] 29.- connect ? x3[0] x2[1] 30.- connect ? x3[1] x4[0] 31.- connect ? x4[0] x3[1]

******************************************************************

59

4.6 PRUEBAS Y RESULTADOS


El objetivo principal de esta tesis fue el desarrollo de un software de procesamiento paralelo para el procesamiento digital de imgenes. Se les aplico a imgenes de tamao 64x64 y de 128x 128 una gran cantidad de filtros desde puntuales hasta morfolgicos, esto, con la finalidad de calcular el tiempo de procesamiento, tiempo de comunicacin y tiempo total de cada filtro sobre una imagen dada. Se hicieron 4 programas llamados programat1, programat2, programat3 y programat4, los cuales procesan a la imagen con un transputer, con 2 transputers, 3 transputers y cuatro transputers, respectivamente. Cada uno de estos programas se ejecutaron para demostrar que el tiempo que se tarda programat4 en procesar una imagen es la cuarta parte de tiempo de lo que se tarda programat1 en procesar a esa misma imagen. Para programat2 es la mitad y para programat3 es la tercera parte. A continuacin se muestra grficamente los resultados del tiempo total calculado en cada uno de los transputers al aplicar los filtros: mediana, sobel, ampliacin isomtrica y erosin. Se eligieron estos filtros debido a que son los que realizan mas operaciones aritmticas y logicas. Programa programat1 programat2 programat3 programat4 Filtro Mediana Mediana Mediana Mediana Tiempo total 1.04 s 0.50 s 0.33 s 0.25 s

tiempo vs num. transputers


1.2 1 tiempo 0.8 0.6 0.4 0.2 0 T1 T2 T3 T4 transputers 0.5 0.33 0.25 segundos 1.04

Programa programat1 programat2 programat3 programat4

Filtro Sobel Sobel Sobel Sobel

Tiempo total 0.26 s 0.13 s 0.08 s 0.06 s

60

tiem po vs num .transputers 0.3 0.25 tiempo 0.2 0.15 0.1 0.05 0 T1 T2 T3 T4 transputers 0.13 0.08 0.06 segundos 0.26

Programa programat1 programat2 programat3 programat4

Filtro Ampliacin Isomtrica Ampliacin Isomtrica Ampliacin Isomtrica Ampliacin Isomtrica

Tiempo total 0.12 s 0.06 s 0.04 s 0.03 s

tiem po vs num . transputers 0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 T1

0.12 segundos 0.04 0.03 T4

tiempo

0.06

T2

T3

transputers

Programa programat1 programat2 programat3 programat4

Filtro Erosin Erosin Erosin Erosin

Tiempo total 0.24 s 0.12 s 0.08 s 0.06 s

61

tiem po vs num . transputers 0.3 0.25 0.2 0.15 0.1 0.05 0 T1

0.24 0.12 0.08 0.06 T4 segundos

tiempo

T2

T3

transputers

62

CONCLUSIONES
Durante la realizacin de este proyecto se encontraron algunos obstculos tales como pintar la imagen a 256 niveles de gris y, ms an, agilizar el proceso de visualizacin de la imagen. Estos problemas, entre otros, fueron resueltos satisfactoriamente, cumpliendo los objetivos del proyecto. 1. Se comprendi el funcionamiento de la tarjeta Fast-9 y del lenguaje C paralelo. Se realizaron varios programas ejemplos de paralelismo. Se practicaron las instrucciones grficas que ofrece el lenguaje C. 2. Se logro abrir una imagen bitmap de 8 bits en escala de grises para la manipulacin de sus datos. 3. Se comprendi el funcionamiento de la tarjeta de video VGA, til para pintar la imagen. 4. Se implemento satisfactoriamente el sistema en 4 transputers. Las imgenes a procesar son de tamao 128*128 y 64*64 y, se les puede aplicar una variedad de filtros que ofrece el sistema; adems, el programa permite guardar la imagen procesada. 5. Se optimiz el tiempo de envi y recibimiento de datos entre los transputers. 6. Tambin se programaron versiones del SPPPDI para ejecutarse en 1, 2, 3 y 4 transputers para efectos de anlisis de tiempos de procesamiento. 7. Se realizo un anlisis tiempo-procesamiento el cual muestra la efectividad de ejecutar estos filtros en 4 transputers. 8. Finalmente podemos decir que el objetivo general del presente trabajo se cumpli, ya que se desarrollo un sistema software para el procesamiento paralelo de imgenes digitales que corre en un arreglo lineal de transputers. Queda mucho por hacer en el campo del paralelismo utilizando la tarjeta Fast-9 y lenguaje C paralelo, por lo que se espera que los resultados obtenidos sirvan realmente para obtener en lo futuro nuevas versiones que proporcionen al usuario final ms y mejores opciones.

63

APENDICE A FORMATOS DE ARCHIVO BMP


Estructura de los archivos bitmap.
Cada archivo bit-map contiene: Un encabezado de archivo Un encabezado de informacin del bitmap ( de la imagen ) Una tabla de colores y un arreglo de bytes que definen los bits que integran el bitmap ( la imagen ) en ese orden se encuentra el contenido de un archivo bmp.

Encabezado de archivo
El encabezado de archivo contiene informacin a cerca del tipo y tamao del archivo, as como la ubicacin en el archivo del inicio del bitmap. El encabezado esta definido como una estructura BITMAPFILEHEADER. struct encab_arch { char tipo[2]; long int tamao; long int reservado ; long int inicio_bitmap; } BITMAPFILEHEADER; Donde: tipo tamao reservado inicio_bitmap es un identificador de dos bytes que define el tipo del archivo, en este caso como Bitmap. indica el tamao del archivo en bytes. es un espacio de 4 bytes que contiene ceros. indica la ubicacin de inicio del bitmap dentro del archivo.

Encabezado de informacin del bitmap


El encabezado de informacin del bitmap, est definido como una estructura BITMAPINFOHEADER, especifica informacin acerca del tamao del encabezado e informacin referente a la imagen. struct encab_info_bmp { long int tamao, ancho, alto; int planos, cont_bits; long int compresion, tam_imagen,; long int x, y ; long int colores_usados, colores_impot, } BITMAPINFOHEADER;

64

Donde: tamao ancho alto planos cont_bits compresion tam_imagen x, y colores_usados colores_import

tamao del encabezado de informacin del bitmap. nmero de pixeles que contiene la imagen a lo ancho. alto en pixeles de la imagen. nmero de planos que se utilizan en la imagen. nmero de bits que definen un pixel y el nmero mximo de colores que pueden existir en el bitmap. indica si la imagen est comprimida y por que mtodo, ( si compresin = 0 entonces la imagen no est comprimida ) determina el tamao de la imagen. nmero de pixeles en el eje x y y nmero de colores que se usan en el bitmap. colores ms importantes en la imagen(bitmap).

Tabla de colores.
La tabla de colores est definida como un arreglo de estructuras RGBQUAD , y contiene tantos elementos como colores haya en el bitmap. Para archivos cuyo cont_bits = 24, la tabla de colores no existe, ya que para ellos, cada pixel esta representado por 24 bits de los cuales 8 bits representan la intensidad para el color rojo, otros 8 la intensidad para el color verde , y otros 8 la intensidad para el color azul, Dado que los colores en este tipo de archivos, se obtienen variando intensidades en tres color primarios y mezclndolos. Estos colores primarios son el Rojo-Verde-Azul, (Reg-Green-Blue) RGB. Los colores en la tabla deben aparecer en orden de importancia . Esto ayuda al controlador de video a desplegar un bitmap sobre un dispositivo que no puede desplegar tantos colores como los que hay en el bitmap. struct tab { unsigned int blue, green, red, no_usado ; } rgb[ 256 ]; La estructura BITMAPINFOHEADER puede usarse para representar una combinacin del encabezado de informacin del bitmap y la tabla de colores. Los bits del bitmap, que siguen despus de la tabla de colores, consisten de un arreglo de valores tipo byte, representando renglones consecutivos del bitmap. Cada rengln consiste de bytes consecutivos que representan los pixeles de un lnea de izquierda a derecha. El nmero de bytes que representan una lnea depende del formato de color y el ancho en pixeles del bitmap. Si es necesario las lneas deben ser rellenadas con cero al final sobre un lmite de 32 bits. Las lneas en el bitmap son guardadas de abajo hacia arriba. Esto quiere decir que el primer byte en el arreglo representa el pixel de la esquina inferior izquierda del bitmap y el ltimo byte representa el pixel de la esquina superior derecha. El miembro cont_bits de la estructura BITMAPINFOHEADER determina el nmero de bits que definen cada pixel y el mximo nmero de colores en el bitmap. Este miembro puede tener uno de los siguientes valores: 1 Lo cual indicara que el bitmap es monocromtico ( blanco y negro ), y razn por la cual la tabla de colores contendra slo dos entradas, una para cada color. Y cada bit del bitmap representa un pixel Si el bit en el bitmap es cero, el pixel es

65

desplegado con el color de la primera entrada de la tabla de colores. Si el bit tomado del bitmap esta en uno, el pixel ser desplegado con el color de la segunda entrada en la tabla de colores. 4 Esto indica que el bitmap tiene un mximo de 16 colores. Por lo que la tabla de colores tendr 16 entradas. Cada pixel del bitmap esta representado por 4 bits. Por ejemplo si el primer byte en el bitmap es 0x1A, este byte representa dos pixeles. El primer pixel(1) contiene el color de la segunda entrada de la tabla de colores y el segundo pixel(A) contiene el color en la onceava entrada en la tabla de colores. Para el cual el bitmap tendr un mximo de 256 colores. Cada pixel del bitmap estar representado por 1 byte (8 bits) del mapa de bits. As, si el primer byte en el bitmap es 0x1A (hexadecimal ), entonces el primer pixel ser pintado con el color que est almacenado en la entrada nmero 26 de la tabla de colores.

24

Indica que el bitmap puede tener un mximo de 224 colores. Donde cada pixel del bitmap estar representado por 3 bytes (24 bits) cada byte representar la intensidad en rojo, verde y azul respectivamente, del color del pixel. De aqu que anteriormente se mencion que en este caso, no existe tabla de colores, pues las intensidades estn dadas en el valor del pixel. El miembro colores_usados de la estructura bmp_info_bmp, especifica el nmero de colores usados en el bitmap, Si colores_usados es igual a 0 ( cero ) entonces se debe entender que el bitmap est usando el mximo de colores posibles. Cabe mencionar que independientemente del nmero de entradas que contenga la tabla de colores, cada una de estas, abarca 32 bits, distribuidos de la siguiente manera:

Tabla de colores
32 (bits) Entrada [0] [1] [2] [3] [4] [5] . . . 1 byte R (Rojo) 84 252 84 252 84 252 1 byte G (Verde) 252 252 84 84 252 252 1 byte B (Azul) 84 84 252 252 252 252 1 byte No usado 0 0 0 0 0 0

66

Вам также может понравиться