Ingeniería Superior de Informática



Documentos relacionados
PRÁCTICA 1. Grupo de Visión Artificial. David García Pérez

Introducción a MatLab y Tollbox Image Processing

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

by Tim Tran:

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

MATLAB: Introducción al procesamiento de imágenes

Photoshop. Conceptos Básicos

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

Qué es la tecnología digital?

UNIDADES DE ALMACENAMIENTO DE DATOS

SISTEMAS DE NUMERACIÓN

Segmentación de color en imágenes digitales usando Visual C#.Net

Operaciones Morfológicas en Imágenes Binarias

Práctica 1 - Pista de Carreras Programación II

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Visión por Computador

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Benemérita Universidad Autónoma de Puebla

ARREGLOS DEFINICION GENERAL DE ARREGLO

Centro de Capacitación en Informática

SISTEMAS DE NUMERACIÓN. Sistema decimal

Arrays y Cadenas en C

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

x

❷ Aritmética Binaria Entera

Fundación Universitaria San. Direccionamiento IP

Roberto Quejido Cañamero

Tema 2. Espacios Vectoriales Introducción

La ventana de Microsoft Excel

Colegio Salesiano Don Bosco Academia Reparación Y Soporte Técnico V Bachillerato Autor: Luis Orozco. Subneteo

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Los polinomios. Un polinomio es una expresión algebraica con una única letra, llamada variable. Ejemplo: 9x 6 3x 4 + x 6 polinomio de variable x

Tutorial de Subneteo Clase A, B, C - Ejercicios de Subnetting CCNA 1

Manual de GIMP. Capítulo 6. Los colores MANUAL DE GIMP. Capítulo 6: Los colores

UNLaM REDES Y SUBREDES DIRECCIONES IP Y CLASES DE REDES:

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Matemática de redes Representación binaria de datos Bits y bytes

Comenzando con MATLAB

Introducción al tipo de dato ARRAY

Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal

Figura 1.1. Figura 1.2

TÉCNICAS DE CONVERSIÓN A BLANCO Y NEGRO (basado en los métodos de Russell Brow, Rob Carr y Scott Kelby)

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

EJERCICIOS DEL TEMA 1

Manual de Procedimiento

Unidad 1. La información

MATEMÁTICAS CON LA HOJA DE CÁLCULO

Tema 3. Espacios vectoriales

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

Sistemas de numeración

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

2. ABRIR UN NUEVO DOCUMENTO DE TRABAJO

Por ejemplo convertir el número 131 en binario se realiza lo siguiente: Ahora para convertir de un binario a decimal se hace lo siguiente:

BREVE MANUAL DE SOLVER

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

1. Visualización de datos con Octave

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD

Draw: objetos en 3D, diagramas de flujo y exportación

Trabajar con Máscaras y Canales

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon

Sobre la lectura y escritura de datos en FORTRAN.

Profundidad tonal. Es el número de grises que tiene una imagen entre la densidad máxima y la densidad mínima.

Opciones disponibles para arrancar MAX

Anexo B. Comunicaciones entre mc y PC

Materia: Informática. Nota de Clases Sistemas de Numeración

Centro de Capacitación en Informática

TUTORIAL PARA REDIMENSIONAR FOTOS

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

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

(decimal) (hexadecimal) 80.0A.02.1E (binario)

15 CORREO WEB CORREO WEB

SISTEMAS DE NUMERACIÓN.

1. SISTEMAS DIGITALES

BASES DE DATOS - Microsoft ACCESS 2007-

Vicepresidente Regional

Matrices. Definiciones básicas de matrices. José de Jesús Angel Angel.

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 04: Reservas- Planning- Cuentas del Hotel [1]

Aritmética finita y análisis de error

Modulo 1 El lenguaje Java

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

MANUAL COPIAS DE SEGURIDAD

Apuntes de Microcontroladores (Repaso de temas previos)

Introducción a la Programación 11 O. Humberto Cervantes Maceda

TUTORIAL (TRANSLATE.CLASS)

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Internet Information Server

Informática Bioingeniería

Notas de Teórico. Sistemas de Numeración

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Organización del Computador. Prof. Angela Di Serio

Práctica 2: Datos. Fonaments d Informàtica 1r curs d Enginyeria Industrial

TEMA 2: Representación de la Información en las computadoras

La práctica del análisis de correspondencias

Guía N 1: Fundamentos básicos(i)

MATERIAL 2 EXCEL 2007

LOS MODOS DE FUSIÓN.

Tema 8: Tratamiento de datos. Ficheros

Transcripción:

Ingeniería Superior de Informática Asignatura: Visión Artificial Curso 2007/08 Práctica nº 1 : Fundamentos de la Image Processing Toolbox de MATLAB 1. BREVES DEFINICIONES... 1 2. IMÁGENES EN MATLAB Y LA IMAGE PROCESSING TOOLBOX... 3 CLASES DE ALMACENAMIENTO EN LA TOOLBOX... 3 3. TIPOS DE IMÁGENES EN LA TOOLBOX... 3 IMÁGENES INDEXADAS... 4 Clase y desplazamiento en mapas de colores... 4 IMÁGENES DE INTENSIDAD (RGB)... 4 IMÁGENES DE BINARIAS... 4 IMÁGENES RGB... 4 ARRAYS DE IMÁGENES MULTIFRAME... 5 Limitaciones... 6 4. SUMARIO DE TIPOS DE IMÁGENES Y CLASES NUMÉRICAS... 6 5. CONVERSIÓN DE TIPOS DE IMÁGENES... 7 6. REFERENCIAS... 8 1. Breves definiciones La siguiente tabla nos ayudará, de manera resumida, a entender un poco más los tipos de imágenes con los que MATLAB trabaja. Palabras Imagen binaria (Binary image) Definiciones Imagen que contiene sólo píxeles de color blanco y negro. En MATLAB, una imagen binaria es representada por una matriz de tipo uint8 o double logical que contiene 0 s y 1 s (los cuales representan blanco y negro respectivamente). Una matriz es logical cuando sus flags lógicas

Tipo imagen (Image type) Imagen indexada (Indexed image) Imagen de intensidad (Intensity image) Imagen multiframe (Multiframe image) están habilitadas. De forma habitual se nombra a la variable que contiene una imagen binaria como BW. La relación definida entre los valores de un array y los colores de los píxeles. La toolbox soporta imágenes binarias, indexadas, de intensidad y RGB. Imagen cuyos píxeles tienen valores que son índices directos a un mapa de color RGB. En MATLAB, una imagen indexada es representada por un array de clase uint8, uint16, o double. El mapa de color es siempre un array mx3 de clase double. De forma habitual se nombra a la variable que contiene una imagen indexada como X. Es una imagen cuyos valores de píxeles corresponden a una escala de grises. En MATLAB, una imagen de intensidad es representada por un array de clase uint8, uint16, o double. Mientras estas imágenes no sean guardadas con mapas de color, MATLAB usará un mapa del sistema para mostrarla. De forma habitual se nombra a la variable que contiene una imagen de intensidad como I. Este término es sinónimo de escala de grises. Un archivo que contiene más de una imagen o frames. Una vez guardado en una variable, la imagen multiframe es un array de 4 dimensiones, donde la cuarta dimensión especifica el número del frame. Este término es sinónimo de imagen multipágina (multipage image) Imagen RGB (RGB image) Una imagen cuyos píxeles son especificados por 3 valores, uno para cada componente de color (rojo, verde y azul) de cada píxel. En MATLAB, una imagen RGB es representada por un array mxnx3 de clase uint8, uint16, o double. De forma habitual se nombra a la variable que contiene una imagen RGB como RGB. Clase de almacenamiento (Storage class) Es la clase numérica de almacenamiento usada para guardar una imagen en MATLAB. Las posibles clases que MATLAB utiliza son uint8, uint16 y double.

2. Imágenes en MATLAB y la Image Processing Toolbox Las estructuras de datos básicos en MATLAB son los arrays, unos conjuntos ordenados de elementos reales o complejos. Este objeto es, de forma natural, adecuado a la representación de imágenes, o de lo que es lo mismo, conjuntos ordenados de valores reales de color o intensidad. MATLAB guarda la mayoría de las imágenes como arrays bidimensionales (matrices), en los que cada elemento de la matriz corresponde a un único píxel 1 en la imagen mostrada. Así, por ejemplo, una imagen compuesta por 200 filas y 300 columnas de puntos de color diferente sería guardada en MATLAB como una matriz de 200x300. Algunas imágenes, como las RGB 2, requieren un array tridimensional, donde el primer plano de la tercera dimensión representa las intensidades de color rojo, la segunda el verde y la tercera azul. Esta convención hace que trabajar con imágenes en MATLAB sea similar a trabajar con cualquier otro tipo de matrices, y hace que toda la potencia que MATLAB ofrece al manejo de matrices sea accesible para aplicaciones de procesamiento de imágenes. Por ejemplo, podemos seleccionar un único píxel de una imagen usando la nomenclatura habitual en el manejo de matrices: I(2,15) Este comando devuelve el valor del píxel que se encuentra en la fila 2 y la columna 15 de la imagen guardada en memoria I. Clases de almacenamiento en la Toolbox Por defecto, MATLAB guarda la mayor parte de los datos como arrays de clase double. Los datos en estos arrays son guardados como números de punto flotante de doble precisión (64-bit). Sin embargo, para procesamiento de imagen, esta representación puede no ser siempre la más adecuada. El número de píxeles en una imagen puede ser muy grande (por ejemplo una 1000x1000 tiene 1 millón de píxeles). Como cada píxel está representado por, al menos, un elemento del array, esta imagen requeriría unos 8 MB de memoria. Para reducir los requisitos de memoria, MATLAB puede guardar los datos de una imagen en arrays de enteros sin signo de 8 o 16 bits, las llamadas clases uint8 y uint16. Estos arrays requieren una octava y una cuarta parte de memoria respecto a un array de tipo double. 3. Tipos de imágenes en la Toolbox Como hemos visto, la toolbox de procesamiento de imágenes soporta 4 tipos básicos de imágenes. Imágenes indexadas Imágenes de intensidad Imágenes binarias Imágenes RGB 1 Pixel viene de picture element y usualmente denota un único punto de la imagen 2 RGB viene del inglés Red-Green-Blue

Imágenes indexadas Una imagen indexada consiste en una matriz de datos, X, y una matriz de mapa de color, map. La matriz de datos puede ser de clase uint8, uint16 o double. La matriz del mapa de colores es un array de clase double de mx3 que contiene valores de punto flotante en el rango [0,1]. Cada fila del mapa especifica la componente de rojo, verde y azul de un único color. La imagen indexada utiliza de forma directa el mapa de colores. El color de cada píxel de la imagen es determinado mediante el uso del correspondiente valor de X como índice para el mapa. Así, un valor 1 apuntaría a la primera fila del mapa, 2 a la segunda,... Un mapa de colores es normalmente guardado con una imagen indexada y es automáticamente cargado con la imagen cuando usamos la función imread. Clase y desplazamiento en mapas de colores La relación entre los valores de la matriz de la imagen y el mapa de color depende de la clase de la matriz de la imagen. Si esta matriz es de clase double entonces el valor 1 apuntará a la primera fila del mapa, el 2 a la segunda,... como ya se ha comentado anteriormente. Sin embargo si la clase de la matriz es uint8 o uint16, hay un desplazamiento y el valor 0 apuntaría a la primera fila del mapa, el valor 1 a la segunda y así sucesivamente. Este desplazamiento es también usado en formatos de ficheros gráficos para maximizar el número de colores que puede soportar. Imágenes de intensidad Una imagen de intensidad es una matriz de datos, I, cuyos valores representan intensidades dentro de algún rango. MATLAB guarda la imagen de intensidad como una única matriz, cuyos elementos son los píxeles de la imagen. La matriz puede ser de clase double, uint8 o uint16. Los elementos de la matriz de intensidad representan varias intensidades, o niveles de gris, donde la intensidad 0 usualmente representa negro (ausencia de color) y la intensidad 1, 255 o 65535 representa intensidad total o blanco. Imágenes de binarias En una imagen binaria, cada píxel asume uno de sólo dos valores discretos. Esencialmente, estos dos valores corresponden a activado o desactivado. Una imagen binaria es guardada como una matriz bidimensional de 0 s (píxeles desactivados) y 1 s (píxeles activados). Una imagen binaria puede ser considerada un tipo especial de imagen de intensidad, conteniendo solamente blanco y negro. Una imagen binaria puede ser guardada en un array de clase double o uint8. Un array de clase uint8 es generalmente preferible por usar bastante menos memoria que si fuese de tipo double. En la toolbox de procesamiento de imagen, si alguna función devuelve una imagen binaria lo hará en forma de array de tipo uint8 logical. La toolbox utiliza el flag logical activado para indicar que el rango de datos de un array de uint8 es [0,1] y desactivado [0,255]. Imágenes RGB Una imagen RGB, a menudo referida como una imagen de color verdadero, es guardada en MATLAB como un array de datos de mxnx3 que define las componentes roja, verde y azul de cada píxel individual. Una imagen RGB no necesita paleta de colores ya que la combinación de las tres componentes básicas de color guardadas en

cada plano definen el propio color a representar en el píxel correspondiente. Los formatos de ficheros gráficos guardan imágenes RGB de 24 bpp, donde cada componente de color son de 8 bits. Esto da una gama de hasta 16 millones de colores. La precisión con la que una imagen de la vida real puede ser replicada ha dado el nombre al término comúnmente utilizado como color verdadero. Una imagen RGB en MATLAB puede ser de clase double, uint8 o uint16. En un array RGB de clase double, cada componente de color tiene un valor comprendido entre 0 y 1. Un píxel cuyas componentes de color sean (0,0,0) se mostrará de color negro, mientras que otro de componentes (1,1,1) se mostrará blanco. Las tres componentes de color de cada píxel son guardadas en la tercera dimensión del array de datos. Por ejemplo, la componente roja, verde y azul del píxel (10,5) serán guardadas en RGB(10,5,1), RGB(10,5,2) y RGB(10,5,3) respectivamente. De igual manera y a modo de otro nuevo ejemplo podemos averiguar el color de un píxel determinado averiguando las tres componentes de color de la manera vista anteriormente, de tal forma que si la componente roja del píxel (2,3) tiene el valor de 0.5176, la verde 0.1608 y la azul 0.0627, el color del píxel (2,3) será: 0.5176 0.1608 0.0627 Para terminar de ilustrar el concepto de los tres planos de color separados usados en una imagen RGB, podemos utilizar el siguiente código que crea una imagen que contiene un gradiente de color y cada componente en diferentes imágenes por separado. RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]); R=RGB(:,:,1); G=RGB(:,:,2); B=RGB(:,:,3); imshow(r) figure,imshow(g) figure,imshow(b) figure,imshow(rgb) Si ejecutamos el código notaremos que cada plano por separado contiene un área de color banco. El blanco corresponde a los valores más altos de cada color. Por ejemplo, en la imagen del plano rojo, el blanco representa la porción de la imagen RGB donde más concentración de rojo existe. Cuando la imagen RGB se vuelve más verde o azul, empiezan a aparecer tonos grises en la imagen R y cuando se entra en la región negra de la imagen R entonces significa que la imagen RGB no contiene valores diferentes de 0 para la componente roja, es decir, R==0. Arrays de imágenes multiframe Para algunas aplicaciones, podemos necesitar trabajar con colecciones de imágenes relacionadas en tiempo o vista, tales como imágenes de resonancia magnética (MRI) o frames de películas. La Image Processing Toolbox da soporte para guardar múltiples imágenes en un mismo array. Cada imagen por separado del array se llama frame. Si un array contiene múltiples frames, estarán concatenados en su cuarta dimensión. Por ejemplo, un array de cinco imágenes RGB de 400x300 sería 400x300x3x5. Una imagen multiframe de intensidad o imágenes indexadas sería 400x300x1x5. Para guardar imágenes separadas en un fichero multiframe podemos utilizar la función cat. Por ejemplo, si tenemos un grupo de imágenes A1, A2, A3, A4 y A5, podemos guardarlas en un único array usando:

A=cat(4,A1,A2,A3,A4,A5) También podemos extraer frames de una imagen multiframe invocándola directamente mediante la notación de MATLAB. Por ejemplo, si tenemos una imagen multiframe MULTI y queremos extraer el tercer frame: FRM3=MULTI(:,:,:,3); Notar que en un array de imágenes multiframe, cada imagen debe tener las mismas dimensiones y el mismo número de planos. Igualmente, en un array multiframe de imágenes indexadas, cada una de las imágenes debe también usar el mismo mapa de colores. Limitaciones Muchas de las funciones en la toolbox operan sólo con las 2 primeras o hasta terceras dimensiones. Podemos usar arrays de cuatro dimensiones con estas funciones, pero extrayendo individualmente los frames. Por ejemplo, para mostrar el séptimo frame de un array multiframe haríamos: imshow(multi(:,:,:,7)) 4. Sumario de tipos de imágenes y clases numéricas La siguiente tabla muestra de forma breve la manera que MATLAB interpreta los elementos de una matriz de datos como píxeles de color, dependiendo del tipo de imágenes y clase de almacenamiento. Tipo de imagen Clase double Clase uint8 o uint16 Binaria La imagen es un array mxn La imagen es un array mxn de ceros y unos donde el de ceros y unos donde el flag logical está activado flag logical está activado. La toolbox no soporta Indexada De intensidad La imagen es un array mxn de enteros en el rango [1,p]. El mapa de colores es un array px3 de valores de punto flotante en el rango [0,1]. La imagen es un array mxn de valores de punto flotante que son escalados por MATLAB para producir índices del mapa de colores, típicamente en el rango [0,1]. imágenes binarias uint16. La imagen es un array mxn de enteros en el rango [1,p- 1]. El mapa de colores es un array px3 de valores de punto flotante en el rango [0,1]. La imagen es un array mxn de valores de punto flotante que son escalados por MATLAB para producir índices del mapa de colores, típicamente en el rango [0,255] o [0,65535].

RGB (Color verdadero) El mapa de colores es un array px3 de valores de punto flotante en el rango [0,1] y es típicamente en escala de grises. La imagen es un array mxnx3 de valores de punto flotante en el rango [0,1]. El mapa de colores es un array mxnx3 de enteros en el rango [0,255] o [0,65535] La imagen es un array mxnx3 de enteros en el rango [0,255] o [0,65535]. 5. Conversión de tipos de imágenes Para ciertas operaciones, puede resultar de utilidad convertir una imagen a un tipo diferente. Por ejemplo, si queremos filtrar una imagen de color que está guardada como imagen indexada, deberíamos primero convertirla a formato RGB. Cuando aplicamos el filtro a la imagen RGB, MATLAB filtra los valores de intensidad en la imagen de forma apropiada. Si intentamos filtrar la imagen indexada, MATLAB simplemente aplicará el filtro a los índices de la matriz, y el resultado será carente de significado. La siguiente tabla muestra las funciones de conversión de imágenes de la Image Processing Toolbox. Función dither gray2ind grayslice im2bw ind2gray ind2rgb mat2gray rgb2gray rgb2ind Propósito Crea una imagen binaria de una de escala de grises; o una indexada a partir de una RGB por el método de dithering. Crea una imagen indexada a partir de una de escala de grises. Crea una imagen indexada a partir de una de escala de grises por el método de umbralización. Crea una imagen binaria de una de intensidad, o RGB, basado en umbralización de la luminancia. Crea una imagen en escala de grises a partir de una imagen indexada. Crea una imagen RGB a partir de una imagen indexada. Crea una imagen en escala de grises a partir de datos en una matriz, reescalando los datos. Crea una imagen en escala de grises a partir de una imagen RGB. Crea una imagen indexada a partir de una imagen RGB. También podemos realizar ciertas conversiones simplemente utilizando la sintaxis de MATLAB. Por ejemplo, podemos convertir una imagen de intensidad a RGB concatenando tres copias de la matriz original a lo largo de su tercera dimensión:

RGB=cat(3,I,I,I); La imagen RGB resultante tiene idénticas matrices para los planos rojo, verde y azul, por tanto la imagen será mostrada en escala de grises. 6. Referencias [1] Manual de ayuda de la Image Processing Toolbox de MATLAB