Contenedoras de dos dimensiones

9
Curso: Algoritmos y programación 3 NIVEL 6 – ESTRUCTURAS CONTENEDORAS DE DOS DIMENSIONES COMPETENCIAS A DESARROLLAR: Utilizar el concepto de matriz como elemento de modelaje, permitiendo agrupar elementos del mundo en una estructura contenedora de dos dimensiones de tamaño fijo. Identificar los patrones de algoritmo para manejo de matrices, dada la especificación de un método. Utilizar el esqueleto del patrón de algoritmo y los pasos asociados como medio para escribir un algoritmo para manipular una matriz. RECURSOS: Equipo de cómputo Internet Lenguaje de programación JAVA – Eclipse INFORMACION INICIAL En la vida diaria el concepto de conjunto ordenado de elementos tiene una gran importancia. Las matrices se usarán como contenedores para almacenar datos relacionados (en vez de declarar como variables separadas cada uno de los elementos del array). Las matrices nos permitirán registrar conjuntos de datos. Cada elemento de la matriz podrá ser accedido directamente por el nombre de la matriz seguido de uno o más subíndices enteros, en función de la dimensión de la matriz, encerrados entre corchetes así: m[0] [0]

description

Contenedoras dos dimensiones

Transcript of Contenedoras de dos dimensiones

Page 1: Contenedoras de dos dimensiones

Curso: Algoritmos y programación 3NIVEL 6 – ESTRUCTURAS CONTENEDORAS DE DOS DIMENSIONES

COMPETENCIAS A DESARROLLAR:

Utilizar el concepto de matriz como elemento de modelaje, permitiendo agrupar elementos del mundo en una estructura contenedora de dos dimensiones de tamaño fijo.

Identificar los patrones de algoritmo para manejo de matrices, dada la especificación de un método.

Utilizar el esqueleto del patrón de algoritmo y los pasos asociados como medio para escribir un algoritmo para manipular una matriz.

RECURSOS:

Equipo de cómputo Internet Lenguaje de programación JAVA – Eclipse

INFORMACION INICIAL

En la vida diaria el concepto de conjunto ordenado de elementos tiene una gran importancia.

Las matrices se usarán como contenedores para almacenar datos relacionados (en vez de declarar como variables separadas cada uno de los elementos del array).

Las matrices nos permitirán registrar conjuntos de datos. Cada elemento de la matriz podrá ser accedido directamente por el nombre de la

matriz seguido de uno o más subíndices enteros, en función de la dimensión de la matriz, encerrados entre corchetes así: m[0] [0]

Page 2: Contenedoras de dos dimensiones

MAPA CONCEPTUAL

EL CASO DE ESTUDIO

A continuación se indica un caso de estudio tomado del proyecto cupi2 universidad de los Andes que permite ilustrar este tema: (Universidad de los Andes, programa de Ingenieríade Sitemas y Computaciòn, 2010)

Enunciado

Se requiere construir una aplicación que permita la visualización de imágenes en formato BMP. El formato BMP consiste en guardar la información del color de cada píxel que conforma a la imagen. El color de un píxel está representado en el sistema RGB (Red-Green-Blue), en el cual el color se forma de la combinación de tres componentes (rojo, verde y azul) cada uno de los cuales es representado por un número que indica la proporción del color del componente en el color final.

En la aplicación se mostrará una imagen la cual puede ser de un ancho de máximo 400 píxeles y de un alto de máximo 300 píxeles. Al cargar una imagen, si está es de dimensiones mayores a las máximas, se debe tomar solo la porción de la imagen determinada por las dimensiones máximas.

También es posible cargar imágenes de dimensiones menores al de las dimensiones máximas.

Además de mostrar la imagen. El programa debe ofrecer seis (6) métodos de transformación de la imagen. Cada uno de estos métodos de transformación se aplica a la imagen cuando se oprime el botón correspondiente.

Page 3: Contenedoras de dos dimensiones

Transformación 1: Negativo

Para calcular el negativo de una imagen calcularemos el color negativo de cada píxel. Para ello debemos restar a cada componente 255 (máximo valor para un componente) y tomar el valor de absoluto de dicha resta. Con los nuevos valores de los componentes formamos el nuevo color.

Ejemplo: Para la imagen de ejemplo, el resultado de aplicar la transformación 1 es:

Transformación 2: Flip Vertical

Descripción: Sirve para invertir verticalmente una imagen. Para ello se intercambian las columnas de píxeles de la imagen: La primera con la última, la segunda con penúltima, etc.

Ejemplo: Para la imagen de ejemplo, el resultado de aplicar la transformación 2 es:

Transformación 3: Binarización

Descripción: Consiste en llevar los colores de la imagen a dos colores: Negro y Blanco. Para ello se establece un umbral y los píxeles con colores que están por encima o igual al umbral se cambian a blanco y por debajo se cambian a negro.

En este caso se sugiere el umbral como el color promedio de la imagen. Para calcular el color promedio, de un grupo de píxeles se promedian cada uno de sus componentes y se forma un nuevo color con dichos promedios como componentes.

Ejemplo: Para la imagen de ejemplo, el umbral sugerido es su valor de color promedio:

Page 4: Contenedoras de dos dimensiones

Transformación 4: Pixelamiento

Descripción: Para esta transformación se divide la imagen en pequeñas regiones de más de un píxel, y se busca el color promedio para esa región (ver transformación3 para la descripción del color promedio), para después cambiar el color de toda la región al color promedio.

Las regiones deben ser de un alto y un ancho que sean divisores del ancho y alto de la imagen total respectivamente.

En este caso buscaremos las dimensiones de la región como:

Ancho región: menor divisor mayor a uno del ancho de la imagen.

Alto región: menor divisor mayor a uno del alto de la imagen.

Ejemplo : Para la imagen de ejemplo, el resultado de aplicar la transformación 4 es:

Transformación 5: Escala de Grises

Page 5: Contenedoras de dos dimensiones

Descripción: Para convertir la imagen a grises, se promedian los componentes de cada píxel y se crea un nuevo color donde cada componente (RGB) tiene el valor de dicho promedio

Ejemplo: Para la imagen de ejemplo, el resultado de aplicar la transformación 5 es:

Transformación 6: Convolución

Descripción: La convolución consiste en operar para cada píxel, su región de píxeles vecinos (incluyéndolo), con unos factores que se ingresan en una matriz cuadrada de dimensión impar (para este ejemplo utilizaremos una matriz de 3x3). La dimensión de la matriz de convolución define la región de píxeles vecinos.

La forma en que se opera la región de píxeles con esta matriz es:

El centro de la matriz coincide con el píxel que se esta procesando.

Cada píxel (en realidad cada componente del píxel) de la región se multiplica con su factor correspondiente.

Se suman los resultados de estas multiplicaciones.

La sumatoria anterior se divide por la suma de los factores que fueron operados: Si el píxel está cerca del borde de la imagen (tomando en cuenta la dimensión de la matriz de convolución) no aplican todos los factores de la matriz (porque no todos tienen un píxel correspondiente), sólo los que efectivamente se operaron.

El color que se crea con el resultado de las operaciones anteriores (que se hace para cada componente) reemplaza al color del píxel original (el del centro).

Page 6: Contenedoras de dos dimensiones

Sin embargo puede darse el caso de que la suma de los factores sea 0: en ese caso no se realiza la división. Esto puede dar origen a interesantes efectos como la detección de bordes.

La operación de la imagen con la matriz de convolución debe hacerse sobre el mapa de píxeles original y no acumular las transformaciones a píxeles hechas por operaciones anteriores con la matriz.

Ejemplo: Con la siguiente matriz de convolución, el efecto obtenido es la suavización de la imagen:

RequerimientosNombre R1 – Mostrar una imagen BMP

Resumen Se debe mostrar una imagen BMP de máximo 400x300 píxeles. Si la imagen es más grande se debe solamente mostrar la esquina superior izquierda hasta ocupar el espacio disponible.

Entradas

Nombre del archivo que contiene la imagen

Resultados

La imagen BMP que es presentada en la pantalla

Nombre R2 – Transformar la imagen

ResumenA partir de la imagen presentada en pantalla, mostrar el resultado de aplicar seis transformaciones a la misma. Estas transformaciones incluyen, el negativo de la imagen, el flip horizontal, la binarización, el pixelamiento, escala de grises y convolución.

Entradas

Imagen Original antes de que se aplique el filtro

Algunas transformaciones requieren parámetros: para aplicar la binarización se necesita un umbral, para aplicar una convolución es necesaria una matriz de convolución.

Resultados

La imagen después de que se aplicó el filtro

Page 7: Contenedoras de dos dimensiones

Modelo conceptual

PATRONES DE RECORRIDO

Éxitos