Академический Документы
Профессиональный Документы
Культура Документы
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
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
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.
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.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 :
LIGA 1 LIGA 2
1 MB DE RAM INTERNA
20 Mbits 20 Mbits
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.
0 0 2 ROOT 3 1 0 1 P1 3 2 0 1 P2 3 2 0 1 P3 3 2
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
(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
x11
x12 . . .
x1 n
I=
filas (eje y)
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
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.
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
(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
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
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]
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]
Imagen original
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
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
26
Imagen original
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
I =
Imagen original
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=
I=
x n2 x 22 . . . x 12 . . . . . . . . . . . . x n1 x 21 . . . x11
Imagen original
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.
30
CAPITULO 3
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.
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
Imagen Original
SPPPID I1 I2 I3 I4
Proceso 1
Proceso 2
Proceso 3
Proceso 4
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
Recibir subimagen
Aplicar Filtro Aplicar Filtro Enviar subimagen Enviar subimagen Proceso3 Proceso4
35
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
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
Transputer1
envo de subimagen 4
Transputer2
recepcin de subimagen 4
Transputer3 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
T2 T3
recepcin de subimagen 2
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
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)
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
................
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
Filas (alto)
1 fila de datos 0 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
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.
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.
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).
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.
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).
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
EXISTE ARCHIVO?
SI
DIVISIN DE IMAGEN
49
GUARDAR IMAGEN?
NO
SI
INTERFAZ DE USUARIO
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.
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).
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; }
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.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
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
*********************************************************************
****************************************************
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
***************************************************************
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
***************************************************************
******************************************************************
***********************************************************
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
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
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
tiem po vs num . transputers 0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 T1
tiempo
0.06
T2
T3
transputers
61
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
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.
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