EL filtro mediano es un filtro no lineal propuesto por

Documentos relacionados
PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ DISEÑO E IMPLEMETACIÓN DEL FILTRO MEDIANO DE DOS DIMENSIONES PARA ARQUITECTURAS SIMD

IV. Implantación del sistema.

Arquitecturas GPU v. 2013

picojava TM Características

ARREGLOS DEFINICION GENERAL DE ARREGLO

Conclusiones. Particionado Consciente de los Datos

Palabras Clave: Vídeo en FPGA, Procesamiento en Tiempo Real RESUMEN

Práctica 5. Curso

Modelo de aplicaciones CUDA

Arquitectura Von Neumann

Capítulo IV. Implementación del Sistema

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

PROCESAMIENTO DIGITAL DE IMÁGENES MEDIANTE EL USO DE UN FPGA Y LENGUAJE VHDL

CAPÍTULO 3. HERRAMIENTA DE SOFTWARE DE PLANEACIÓN DE

Tema 2. Diseño del repertorio de instrucciones

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

Arquitecturas de Computadoras II. Febrero 2013

Arquitecturas CISC y RISC

Base de datos en Excel

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

PRODUCTIVIDAD DE PROYECTOS DE DESARROLLO DE SOFTWARE: FACTORES DETERMINANTES E INDICADORES

Aprender a realizar filtrados de información en capas de SIG raster.

Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.

En nuestro capitulo final, daremos las conclusiones y las aplicaciones a futuro

T E C N O L O G Í A OPTIMIZACIÓN DE MATERIALES MEDIANTE PATRONES DE CORTE EFICIENTE. Aplicación. a la INDUSTRIA

ÍNDICE SISTEMAS OPERATIVOS... 5

Servicios Educativos Del Estado De Chihuahua Sistema Integral de Presupuestos y Materiales. Indice. Introducción Barra de Herramientas...

REVISTA COLOMBIANA DE FÍSICA, VOL. 34, No CONTEO Y CARACTERIZACIÓN DE REGIONES COMPLETAS EN IMÁGENES 2D: APLICACIÓN A NÚCLEOS CELULARES

2. Requerimientos Técnicos

Workflows? Sí, cuántos quiere?

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Capítulo 3. Diseño y Arquitectura del Sistema

Generación de números aleatorios

4. Programación Paralela

by Tim Tran:

Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones.

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Cómo ordenar una lista de números?

DESCRIPCION DEL SITEMA MASTER.

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

Ampliación de Estructuras de Datos

ATIENDE Registro de la atención de un cliente

Tarea 4.2 Memoria Virtual

INFORME Nº GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware

ITT-327-T Microprocesadores

CAPÍTULO 4 ANÁLISIS DE IMPLEMENTACIONES

COMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Practica 01: Programación en C bajo Linux y funciones

Operaciones Morfológicas en Imágenes Binarias

Dr.-Ing. Paola Vega Castillo

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

Filtrado de Imágenes y Detección de Orillas Utilizando un Filtro Promediador Móvil Multipunto Unidimensional

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

Soluciones innovadoras para optimizar su infraestructura TI. Virtualización con el sistema operativo i, PowerVM y Power Systems de IBM

Generalidades Computacionales

Servinómina. Servicio de Visualización de Nóminas. (Servinómina) Agosto de Página 1 de 8 MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS

SEGURIDAD Y PROTECCION DE FICHEROS

Pilas y Colas. Capítulo 3

para Mac OS X FD Versión 1.0

CAPÍTULO 3 RED NEURONAL PARA EL RECONOCIMIENTO DE ROSTROS

Novedades en Q-flow 3.02

Capítulo 5. Cliente-Servidor.

Relación entre formación y empleo

1 EL SISTEMA R/3 DE SAP AG

SCOP++ Lidar. Metodología de filtrado

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

2.1 Soluciones Comerciales Existentes

Construcción de cubos OLAP utilizando Business Intelligence Development Studio

Arquitecturas DSP. Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee DSP Processor Fundamentals. Architectures and Features IEEE Press 1997

Preliminares. Tipos de variables y Expresiones

GENERALIDADES DE BASES DE DATOS

5.1.1 Sumadores con anticipación de Acarreo. g i = a i b i. c i = c i-1 p i + g i s i = p i + c i-1. c 0 = g 0 + c -1 p 0

Symantec Desktop and Laptop Option

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

La principal diferencia entre una cámara digital y una cámara analógica (la cámara

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Sistema. de Administración y Ventas. Serviteca -Taller Automotriz- Garage. Sistemas Automatizados. Sys-Automotriz

CONCURSO COES N 05 / 2014

MANUAL DE USUARIO SISTEMA DE ALMACEN DIF SONORA

Capitulo III. Diseño del Sistema.

Espacios generados, dependencia lineal y bases

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

CAPÍTULO 6 SIMULACIONES Y RESULTADOS

Copyright 2010 Eurohelp

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

CAPÍTULO 5. EVALUACION

DIAGNOSTICO SERVIDOR Y PLATAFORMA MOODLE

O C T U B R E SOPORTE CLIENTE. Manual de Usuario Versión 1. VERSIÓN 1 P á g i n a 1

CASO PRÁCTICO Nº Monitoreo y Ajuste de la Carga de Trabajo de los Recursos. - Control del Proyecto usando el Valor Ganado.

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

Índice INTERNET MARKETING 1

18. Camino de datos y unidad de control

Transcripción:

Filtro Mediano Bidimensional Rápido Implementado con la Arquitectura SIMD Ricardo M. Sánchez y Paul A. Rodríguez Resumen El filtro mediano es una de la operaciones básicas en el procesamiento de imágenes; se utiliza para eliminar ruido impulsivo, sin embargo su costo computacional es elevado. Las soluciones tradicionales consisten en disminuir la complejidad del algoritmo del filtro mediano, y en vectorizar algoritmos ya existentes. Esta vectorización se realiza utilizando las unidades SIMD de los procesadores modernos, las cuales permiten realizar la misma operación a un conjunto de datos. En este documento se implementa el filtro mediano con el algoritmo vectorial propuesto por Kolte [1], el cual aprovecha las ventajas que ofrecen las unidades SIMD. La eficiencia computacional de la implementación realizada se compara con el algoritmo Filtro Mediano de complejidad O(1), recientemente propuesto en [2], concluyéndose que la implementación realizada es 75 y 18.5 veces mas rápida, para áreas de 3 3 y 5 5 respectivamente. I. INTRODUCCIÓN EL filtro mediano es un filtro no lineal propuesto por primera vez en 1974 [3] para su uso en arreglos bidimensionales. Su característica principal es la de eliminar el ruido del tipo impulsivo (comúnmente llamado ruido sal y pimienta) [4] sin alterar la información de la imagen de manera significativa. Debido a esta propiedad, se utiliza como parte del preprocesamiento de imágenes para análisis de mayor complejidad, como son el reconocimiento oṕtico de caracteres, la identificación de objetos y rostros, etc. Sin embargo, por ser un filtro no lineal, su costo computacional es elevado. El enfoque común para mejorar su desempeño consiste en disminuir su complejidad inicial de O(r 2 log r) [3], donde r es el radio del kernel. Las propuestas de mejora obtienen complejidades de O(r) [5], O(r 2 ) [6], O(log 2 r) [7], O(log r) [8] e incluso O(1) [2]. La mayoría de de los algoritmos antes mencionados tienen una formulación puramente escalar; tan sólo [2] menciona que una implementación vectorial del algoritmo O(1) es posible, sin embargo la misma no es explícitamente descrita. Actualmente los procesadores cuentan con unidades SIMD (Instrucción Única, Datos Múltiples - Single Instruction Multiple Data) [9] que les proveen la capacidad de realizar operaciones vectoriales. Los algoritmos escalares [2], [5], [6], [7], [8] no aprovechan la capacidad computacional que las unidades SIMD ofrecen. Algoritmos vectoriales (que utilizan la unidad SIMD), como [10] [1], minimizan el uso de comparaciones y reutilizan los resultados obtenidos para disminuir las operaciones necesarias para calcular la mediana. Adicionalmente, consiguen disminuir considerablemente el tiempo de Ambos autores pertenecen al Grupo de Procesamiento Digital de Señales e Imágenes de la Pontificia Universidad Católica del Perú, Lima, Perú. Email: [a20030447,prodrig]@pucp.edu.pe, Tel: +51 1 626 2000 anexo 4681. procesamiento del filtro mediano al utilizar de manera eficiente el paralelismo de datos que ofrecen las unidades SIMD. En la sección 2 se describe el algoritmo vectorial de Kolte [1] para el filtro mediano. En la sección 3 se describen las capacidades SIMD de los procesadores Intel [11], y del procesador Cell Broadband Engine [12], para los cuales se realiza la implementación del algoritmo vectorial. En la sección 4 se muestran los resultados computacionales de las implementaciones realizadas; finalmente en la sección 5 se listan las conclusiones. II. ALGORITMO VECTORIAL DEL FILTRO MEDIANO La propuesta de este algoritmo se realizó en 1999 por Kolte et al. [1]. Su operación se enfoca a kernels pequeños (3 3 y 5 5) y obtiene una complejidad de O(r 2 ), donde r es radio del kernel. Su funcionamiento de basa en las redes de ordenamiento [13], las cuales son fácilmente vecotrizables. obteniendose una implementación eficiente en las unidades SIMD [14]. II-A. Redes de ordenamiento Una red de ordenamiento es una esquema que describe rutas y comparaciones que se deben realizar para que n entradas, x 0, x 1, x 2,..., x n, se permuten para obtener n salidas, y 0, y 1, y 2,..., y n, tal que y i < y i+1. Una red de 2 elementos se presenta como un bloque con dos entradas, I 0, I 1, y dos salidas O 0 = max(i 0, I 1 ), O 1 = min(i 0, I 1 ) (Fig. 1). Para obtener el diagrama de una red de ordenamiento de n elementos se utilizan bloques de redes de dos elementos ordenados de manera que se obtenga la salida deseada [13]. I 0 I 1 O 0 O 1 =max(i,i ) =min(i,i ) Figura 1. Dos formas de representar la red de ordenamiento I 0 I 1 O 0 O 1 =max(i,i ) =min(i,i ) Una de las ventajas que ofrecen estas redes, es que se utiliza una cantidad conocida de comparaciones para ordenar un conjunto de datos. Además, se pueden agrupar bloques que tengan como entradas elementos no relacionados, de modo que los datos se puedan procesar en paralelo. Ésta característica es aprovechada para lograr una implementación eficiente de las redes de ordenamiento en la unidad SIMD. La eficiencia de una red de ordenamiento esta en función del número total de comparaciones que se realizan y el número de niveles en los que las comparaciones se pueden realizar en paralelo. Una

red es mas rápida cuando requiere menos niveles para su ejecución [14]; por ejemplo en la Fig. 2 se muestran dos redes de ordenamiento de 10 elementos, donde el segundo esquema es mas rápido que el primero (utiliza dos niveles menos) a pesar de utilizar dos comparaciones adicionales. (a) 29 bloques, 9 niveles en el centro del arreglo, el cual es la mediana de éste. Este procedimiento se resume en el Algoritmo 1 (ver detalles en [1]). II-C. Funcionamiento vectorial El orden de las operaciones se elige de manera que permiten la reutilización de éstas y el paralelismo de datos. Para aplicar el filtro mediano, de kernel r r, a un bloque de datos B n, son necesarios los r 1 2 últimos datos de los vectores que conforman el bloque B n 1, y los r 1 2 primeros datos del bloque B n+1. Así, se obtiene un vector completo con el valor de la mediana de los datos correspondientes al bloque B n (Fig. 4). B n-1 B n B n+1 (b) 31 bloques, 7 niveles Figura 2. Dos diagramas de redes de ordenamiento para 10 elementos Para obtener la mediana de un conjunto de datos con una red de ordenamiento, no es necesario realizar todas las comparaciones de la red, tan solo aquellas necesarias para obtener el elemento buscado. En la Fig. 3 se muestra de modo gráfico cuales son las operaciones que se deben realizar para obtener el elemento central del ordenamiento, el cual equivale a la mediana de los datos, para redes de 5 y 9 elementos. (a) Mediana de 5 elementos (b) Mediana de 9 elementos Figura 3. Redes de ordenamiento de varios elementos II-B. Funcionamiento escalar Para un arreglo bidimensional de N N datos, se realiza un ordenamiento descendentes entre las columnas. Luego se ordena de manera descendente las filas del mismo arreglo. De esta manera los elementos de mayor valor se ubican en la esquina superior izquierda del arreglo, y los elementos de menor valor, en la esquina inferior derecha. A continuación, se realiza el ordenamiento de los elementos de las N (2 k) diagonales centrales del arreglo con pendiente k = 1, siendo N el lado del área de análisis. Esta operación se repite incrementando el valor de k hasta que solo quede un elemento Figura 4. Para operar el bloque B n son necesarios B n 1 y B n+1 Para la n-ésima iteración, en los registros de la unidad SIMD se encuentran almacenados los datos parcialmente ordenados de los bloques B n 1 y B n, correspondientes a las iteraciones n 2 y n 1 respectivamente. Se inicia la iteración al cargar los datos del nuevo bloque B n+1 y se ordenan las columnas de éste con el uso de una red de ordenamiento vectorial. Como siguiente paso es necesario ordenar las filas, para esto se realiza un ordenamiento en nuevos registros SIMD, para no alterar los valores ordenados y reutilizarlos en la siguiente iteración. Además, se busca que se ordenen todas las filas del bloque con una sola aplicación de la red de ordenamiento; En la Fig. 5 se esquematiza los desplazamientos entre vectores para lograr el resultado deseado. Una vez realizado el ordenamiento de las filas, se almacenan estos resultados y se reordenan los datos para operar las diagonales de los arreglos y obtener el valor de la mediana. Finalmente, se actualizan los valores de B n 1 y B n con los valores B n y B n+1, respectivamente, para la siguiente iteración. Algoritmo 1 Cálculo de la mediana de Kolte [1] 1: Función MEDIANA(A) A: arreglo de N N 2: M (N 1)/2 3: Para c = 0 hasta N 1 hacer 4: OrdenarColumna(c) A r 1,c <= A r,c 5: Fin Para 6: Para r = 0 hasta N 1 hacer 7: OrdenarFilas(r) A r,c 1 <= A r,c 8: Fin Para 9: Para k = 1 hasta M hacer 10: Para s = k (M + 1) hasta k (M 1) (N + 1) hacer 11: OrdenarLinea (k r + c = s) 12: Fin Para 13: Fin Para 14: ResultMedian A M,M 15: Fin Función

12 43 64 34 22 25 32 25 29 16 18 88 67 32 34 52 10 46 74 24 40 08 79 15 54 43 36 25 46 18 63 44 14 25 38 47 14 23 61 37 77 78 52 52 58 37 18 77 34 44 28 35 73 67 54 24 28 18 63 45 B n-1 B n B n+1 12 43 64 34 22 25 32 25 43 64 34 22 25 32 25 29 64 34 22 25 32 25 29 16 34 22 25 32 25 29 16 22 25 32 25 29 16 Ordenar 18 18 88 64 64 64 34 32 32 32 88 43 43 34 32 29 29 29 29 34 34 32 25 25 25 25 25 22 25 25 25 25 25 18 18 12 22 22 22 22 16 16 16 Figura 5. Movimiento de registro para ordenar por filas, k = 5. III. LA UNIDAD SIMD Los procesadores tradicionalmente cuentan con unidades de procesamiento escalar (Unidad Lógico Aritmética - ALU, Unidad de Coma Flotante - FPU). En los últimos años, los nuevos procesadores implementan unidades SIMD que les permiten realizar operaciones vectoriales, con lo que mejoran su capacidad computacional. Para realizar operaciones con ésta unidad, es necesario cargar los datos en los registros de la misma. Los datos deben estar alineados en memoria [15]. Al desarrollar aplicaciones que utilicen estas unidades se deben tener algunas consideraciones. Una de ellas es el número limitado de registros SIMD, el cual restringe la cantidad de vectores con los que se puede trabajar. Otro factor es la cantidad de datos que se pueden almacenar en un registro. III-A. Intel IA-32 y EM64T Intel implementa una unidad SIMD que cuenta con 8 registros SIMD para procesadores IA-32 y 16 registros para procesadores EM64T [11]. Cada registro tiene una capacidad de 128 bits, con lo que se puede almacenar 16 datos del tipo byte (8-bits). Las operaciones realizables son limitadas, en comparación a otras implementaciones SIMD. El procesador cuenta con memoria caché, por lo que el acceso ordenado a los datos implica un incremento en los aciertos de la memoria caché, con lo que se obtiene una mejora en el desempeño [16]. Estos procesadores son el estándar de facto en computadores personales, y por consiguiente de gran disponibilidad. III-B. El Procesador Cell Broadband Engine Diseñado en conjunto por Sony Computer Entretainment, Toshiba e IBM [17], este procesador esta dirigido hacia la computación de alto desempeño. Cuenta con un procesador PowerPC de doble núcleo, además de 8 procesadores auxiliares llamados Synergistic Procesor Unit (SPU), los cuales pueden ejecutar programas independientes y sus operaciones son SIMD. Cada SPU cuenta con 128 registros SIMD, de 128 bits de capacidad por registro y no cuenta con memoria caché. Estos procesadores están enfocados a las aplicaciones multimedia de alto desempeño, así como también a servidores de diversos tipo, por lo que su disponibilidad es limitada. IV-A. IV. RESULTADOS COMPUTACIONALES Mediana estadística Se compara el desempeño de diversos algoritmos de ordenamiento con los que se obtiene la mediana y el algoritmo vectorial propuesto. Las implementaciones se realizan en un procesador Intel Pentium Dual-Core T2330 de 1.60GHz, 1024KB de memoria caché y 1GB de memoria RAM. El sistema operativo es GNU/Linux, kernel 2.6.30 x86 64. Para la prueba se generan 9 datos aleatorios de 8 bits y se obtiene la mediana de éstos. Esta operación se repite 2000 veces y los resultados (Tabla I) muestran que el algoritmo vectorial necesita 4.5 veces menos ciclos de reloj que el algoritmo más rápido [13]. Cabe resaltar que solo se realiza un ordenamiento a la vez con el algoritmo vectorial para esta prueba, ya que la implementación SIMD permite ordenar hasta 16 datos de 8 bits por iteración. Los valores máximos obtenidos obtenidos en la Tabla I son afectados por los otros procesos ejecutándose en el sistema. Tabla I RESULTADOS DE DE DIVERSOS ALGORITMOS DE ORDENAMIENTO. Algoritmo Mínimo Promedio Mediana Máximo Vectorial 108 143,308 6480 BubbleSort 324 507,02 492 12012 QuickSort 432 1144,84 1182 66168 ShellSort 324 1050,71 1080 61020 HeapSort 48113,21 744 487152 IV-B. Filtro mediano bidimensional en procesadores Intel EM64T La implementación del algoritmo vectorial se realiza para el procesador T2330, descrito en la prueba anterior. Este procesador pertenece a la familia de EM64T, los cuales tienen 16 registros SIMD de 128 bits de capacidad. Se utiliza el compilador GCC 4.4, los lenguajes de programación utilizados son C y Ensamblador. La implementación se realiza en forma de una librería, de modo que se puede utilizar en diversas aplicaciones. El algoritmo que se utiliza como referencia es el CTMF [2] (Filtro Mediano en Tiempo Constante - Constant Time Median Filter), el cual tiene complejidad O(1). Cabe resaltar que, si bien en la explicación del algoritmo CTMF no hace mención explícita del uso de las unidades SIMD, el código fuente de [2], que se puede obtener en http://nomis80.org/ctmf.html, contiene instrucciones SIMD para procesadores Intel (MMX y SSE2) y PowerPC (AltiVec). Las pruebas de consisten en aplicar el filtro mediano con kernels de 3 3 y 5 5 a imágenes en escala de grises y tamaños de 128 128, 256 256, 512 512, 768 768 y 1024 1024 pixeles. La aplicación del filtro se repite 1000 veces en cada caso. Para la implementación del filtro de 5 5 se utiliza un buffer para almacenar los datos ordenados de las iteraciones anteriores, pues los registros SIMD del procesador son insuficientes para realizar todas las operaciones necesarias. En las tablas II y III se muestran los resultados obtenidos de las pruebas. Para cada tamaño de imagen se realiza la cuenta

Tabla II RESULTADOS COMPUTACIONALES DEL PROCESADOR EM64T Y KERNEL 3 3 Imagen Vector CTMF Vector CTMF 128 128 33971 2243694 2,07 136,94 256 256 127698 985575,95 150,39 512 512 508074 4079058,94 155,60 768 768 1212594 97932858 2,06 166,04 1024 1024 2200506 172130670 2,154,63 Tabla III RESULTADOS COMPUTACIONALES DEL PROCESADOR EM64T Y KERNEL 5 5 Imagen Vector CTMF Vector CTMF 128 128 149130 2254866 9,137,63 256 256 559146 9928476 8,53 151,50 512 512 2193846 41365668 8,37 157,80 768 768 4924470 91597956 8,35 155,30 1024 1024 87139567149968 8,31 159,41 de los ciclos de reloj que son necesarios para el cálculo de la mediana utilizando el algoritmo vectorial y el algoritmo de referencia. Además, se muestra cuantos ciclos de reloj por píxel se utilizan en cada caso. Se puede observar que en promedio se utilizan 2,02 ciclos de reloj por píxel para aplicar el filtro mediano de 3 3, los cuales equivalen el 1, 3 % de los ciclos requeridos por el algoritmo de referencia. En el caso del kernel de 5 5, son necesarios un promedio de 8,53 ciclos de reloj, es decir, el 5, 6 % de los utilizados por el otro algoritmo. Los resultados obtenidos por Kolte en un procesador PowerPC [1] indican que su implementación requiere, en promedio, 1.15 ciclos de reloj por píxel para el filtro de kernel 3 3, y 6.6 ciclos para el filtro de kernel 5 5. Esta diferencia se debe a que un procesador PowerPC cuenta con 32 registros SIMD [18] e instrucciones que permiten una implementación mas rápida del algoritmo. IV-C. Filtro mediano bidimensional para el procesador Cell Broadband Engine La implementación del algoritmo se realiza con el lenguaje de programación C y se acceden a las operaciones SIMD por medio de las funciones intrínsecas. Se utiliza el compilador GCC [19], con las modificaciones necesarias para compilar programas para los núcleos centrales del procesador y para las unidades SPU. La ejecución se realiza por medio del Full-System Simulator de IBM [20]. Éste simula el procesador Cell Broadband Engine y permite realizar mediciones de desempeño de los programas que se ejecutan en las diversas unidades que el procesador posee. Ejecuta una versión mínima del sistema operativo Fedora 9 para PowerPC64, con el kernel linux 2.6.25.14. La prueba de desempeño es similar a las utilizada para el procesador Intel EM64T. Se aplica el filtro mediano de 3 3 y 5 5 a imágenes de distintos tamaños y se contabilizan los ciclos de reloj utilizados. Debido a que el procesador Cell Broadband Engine cuenta con 128 registros SIMD, no es necesario utilizar el buffer para almacenar los resultados de las iteraciones anteriores para el caso de 5 5. Tabla IV RESULTADOS COMPUTACIONALES PARA EL PROCESADOR CELL BROADBAND ENGINE Imagen 3 3 5 5 3 3 5 5 128 128 2093910 5185536 127,80 316,50 256 256 7756040 210348618,35 320,97 512 512 30631951 80880628 116,85 308,54 768 768 77103745 181805859 130,72 308,24 1024 1024 139442225 323101361 132,98 308,13 De los resultados mostrados en la tabla IV se observa que los ciclos necesarios para operar un pixel se incrementa notablemente con respecto a la implementación del procesador EM64T. Ésto se debe principalmente por el modo de implementación y la plataforma de prueba. El lenguaje utilizado fue C para el procesador Cell, mientras que para el procesador Intel se utilizó Ensamblador, el cual otorga un mejor nivel de optimizaciones. Cabe resaltar la proporción de los ciclos por pixel necesarios para calcular el filtro mediano para kernels de 3 3 y 5 5. Para el procesador Intel EM64T se utilizan 4,22 veces más ciclos de reloj para el kernel de 5 5 que para el de 3 3, mientras que en para el procesador Cell Broadband Engine la diferencia es de 2,5 veces la cantidad de ciclos de reloj. V. CONCLUSIONES Se muestra que el uso de las unidades SIMD mejoran el desempeño computacional de algoritmos que pueden aprovechar el paralelismo de datos, como es el caso del filtro mediano de dos dimensiones. Además se presenta una nueva perspectiva de solución al problema del tiempo de ejecución del filtro mediano: acelerar el cálculo del filtro con las unidades SIMD al diseñar un algoritmo especial para éstas. Se puede apreciar el impacto que tiene la cantidad de registros de las unidades SIMD. Al implementar el filtro mediano para kernels de 5 5, en procesadores Intel EM64T con 16 registros SIMD, los ciclos necesarios para el cálculo se incrementan más de 4.22 veces en comparación al filtro con kernel 3 3. Esta cifra se reduce a 2,5 en el procesador Cell Broadband Engine, con 128 registros SIMD. Esta cantidad de registros permite la implementación del filtro para kernels de mayor tamaño en el procesador Cell Broadband Engine. Finalmente se concluye que la implementación propuesta disminuye de manera considerable el tiempo de ejecución del filtro mediano, para kernels de 3 3 y 5 5, en comparación a la del algoritmo CTMF [2]. La implementación propuesta del filtro podría ser utilizada en aplicaciones en tiempo real. REFERENCIAS [1] P. Kolte, R. Smith, y W. Su, A fast median filter using altivec, Motorola Inc., 1999. [2] S. Perreault y P. Hébert, Median filter in constant time, IEEE Trans. on Image Processing, vol. 16, no. 9, Sep. 2007. [3] J. W. Tukey, Nonlinear (nonsuperimposable) methods for smoothing data, in Conf. Rec. (EASCON), 1974. [4] A. C. Bovik, Handbook of Image and Video Processing. Academic Press, 2000.

[5] T. Huang, G. Yang, y G. Tang, A fast two-dimensional median filter algorithm, IEEE Trans. Acoust., Speech, Signal Process., vol. 27, no. 2, pp. 13 18, Feb. 1979. [6] B. Chaudhuri, An efficent algoritm for running window pel gray level ranking 2-d images, Pattern Recognition Lett., vol. 11, no. 2, pp. 77 80, 1990. [7] J. Gil, Computing 2-d min, median and max filters, IEEE Trans. Pattern Anal. Mach. Intell., vol. 15, no. 5, pp. 504 507, May 1993. [8] B. Weiss, Fast median and bilateral filtering, ACM Trans. Graph., vol. 25, no. 3, pp. 519 526, 2006. [9] M. Flynn, Some computer organizations and their effectiveness, IEEE Trans. Comput., vol. C, no. 22, p. 948, 1972. [10] A. S. Glassner, Graphic Gems. AP Professional, 1995, ch. III.4. [11] Intel 64 and IA-32 Architectures - Optimization Reference Manual, Intel Corporation, pp. 73 77, Noviembre 2007. [12] Cell Broadband Engine Programming Guide, 1st ed., International Business Machines Corporation, Sony Computer Entertainment Inc., Toshiba Corporation 2006, 2009, 3 2009. [13] D. E. Knuth, Art of Computer Programming, Volume 3: Sorting and Searching. Addison-Wesley Professional, May 1998, vol. Vol 3 / Sort and Searching. [14] B. Parhami, Introduction to Parallel Processing Algorithms and Architectures. Kluwer Acadamic Publishers, 2002. [15] L.Ñull y J. Lobur, The Essentials of Computer Organization and Architecture. Jonas and Bartlett Publishers, 2003. [16] M. Kowarschik y C. Weiβ, An overview of cache optimization techniques and cache-aware numerical algorithms, Lecture Notes in Computer Science, pp. 213 232, 2002. [17] Cell Broadband Engine Architecture, International Business Machines Corporation, Sony Computer Entertainment Inc., Toshiba Corporation 2005, 2006, October 2006. [18] Power ISA Version 2.06, International Business Machines Corporation, Enero 2009. [19] R. M. Stallman et al., Using the GNU Compiler Collection. GNU Press, 2008. [20] IBM Full-System Simulator User s Guide, International Business Machines Corporation, May 2009.