1_PDI-pracica

Embed Size (px)

Citation preview

LABORATORIO DE PROCESAMIENTO DIGITAL DE IMGENES

Primera practica EPIE

FACULTAD DE INGENIERA DE PRODUCCIN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERA ELECTRNICA

Laboratorio de Procesamiento Digital de ImgenesPRIMERA PRCTICAPRESENTADO POR:

APELLIDOS Y NOMBRES

CUI

FIRMA

MONTALICO CALDERN, OSCAR 20033231

___________

AREQUIPA PERU

2008LABORATORIO DE PROCESAMIENTO DIGITAL DE IMGENESI. OBJETIVOSII. PROCEDIMIENTO1. LEER Y MOSTRAR UNA IMAGEN. Clear

Clc J=imread('kids.tif'); %leer imajen imshow(J,256)

%mostrar imajen

Con que tipos de imagines trabaja matlab? Que es una imagen indexada?

La propiedad ms bsica de una imagen es su modo. Hay tres modos posibles: RGB, escala de grises, e indexado.

RGB .-son las iniciales en ingls de rojo, verde y azul, e indica que cada punto de la imagen es representado por un nivel de rojo, un nivel de verde, y un nivel de azul. Dado que todos los colores distinguibles por los seres humanos se puede representar por una combinacin de estos colores, las imgenes RGB son a todo color. Cada canal de color tiene 256 niveles de intensidad posibles. Para ms detalles.

imagen de escala de grises .- cada punto es representado por un valor de brillo, que va desde el 0 (negro) hasta el 255 (blanco), con valores intermedios que representan diferentes niveles de gris.

El modo indexado .- ha sido inventado por Compuserve en los inicios de la Web para crear pequeos archivos de imgenes a color, para que pudieran ser transmitidos fcilmente. GIF (Graphic Interchange Format) fue el primer formato indexado. El mtodo consiste en dar cdigos a cada pxel y adjuntar al archivo una tabla con el color correspondiente a cada cdigo. Los pxeles con el mismo cdigo comparten el mismo color. Imgenes indexadas: [I,MAP] La matriz I contiene la imagen indexada y la matriz MAP la paleta de colores RGB asociada. Si la imagen es de 100x100x256 colores, la matriz I es de 100x100 con rango de valores en [100256] y la matriz MAP es de 256x3 con rango de valores en [01]. En el caso de imgenes en niveles de gris, la paleta de colores i de la paleta esta el i-esimo nivel de gris.

2. COMPROBAR UNA IMAGEN EN MEMORIA. Whos

Name Size Bytes Class J 400x318 127200 uint8 arrayGrand total is 127200 elements using 127200 bytesExplique cada respuesta del matlab?(i.e. name,size,bytes y class)Name Indica el nombre del arreglo que almacena a la imagen.

SizeIndica las dimensiones de la imagen.

BytesIndica el nmero total de bytes usados en la imagen.

Class Es la clase numrica de almacenamiento usada para guardar una imagen en MATLAB. Las posibles clases que MATLAB utiliza son uint8, uint16 y double.

3. DESARROLLAR UNA ACTUALIZACIN DE HISTOGRAMAS. imhist(J)

histeq(J) %para esparsir el rango intensidades

r=histeq(J); figure (1);imshow(r,256); figure(2) ; imhist(r)

Que es el histograma de una imagen ? defina y ejemplifique: contraste.histograma es la representacin grfica de las frecuencias relativas con las que aparecen los distintos colores en una determinada imagen ,con una simple mirada puede proporcionar una idea muy aproximada de la distribucin de niveles de gris, el contraste que presenta la imagen , El histograma de una imagen digital con L niveles de gris en el rango [0, L-1] es una funcin discreta de la forma:

h(rk) = nk / Ndonde:

rk es el k-simo nivel de grisnk es el nmero de pxeles en la imagen con el nivel de gris rkN es el nmero total de pxels de la imagenk = 0, 1, 2, ..., L-1 niveles de gris

Las intensidades o niveles de gris estn representadas a lo largo del eje x y el nmero de ocurrencias para cada intensidad se representan en el eje y. Debe remarcarse que la frecuencia de aparicin de cada nivel de gris en el histograma, se nuestra siempre en forma relativa debido al hecho que el valor absoluto puede variar bastante en funcin del tamao de la imagen, as como tambin puede variar el mximo valor a representar. Los valores de los niveles 0 y 255 no se han tenido en cuenta a la hora de realizar el escalado en la representacin, debido a que estos son frecuentemente demasiado amplios, con lo cual no se obtendra una buena representacin para el resto de niveles. De esta manera, en el caso de que excedan el mximo de ocurrencias a representar, dicha barra se ver de color rojo.

La forma del histograma proporciona informaciones importantes como la intensidad media y la dispersin de los valores de nivel de gris, siendo esta ltima, la medida de contraste de la imagen. Cuanto mayor es la dispersin a lo largo del eje de los niveles de gris, mayor es el contraste de la imagen y es entonces cuando el sistema visual humano consigue una mxima respuesta en su apreciacin de la imagen. A continuacin tenemos el siguiente ejemplos para observar los histogramas correspondientes a las diferentes imgenes.

En el histograma de la radiografa podemos ver como la probabilidad de los niveles de gris cercanos al negro es muy elevada con respecto al resto, de aqu podemos deducir que el histograma corresponde con una imagen oscura y con poco contraste.

En el caso contrario al anterior, tenemos un histograma con altas probabilidades de niveles de gris cercanos al blanco ( imagen grua ), de lo que deducimos que corresponde a una imagen clara y con poco contraste.

En el histograma de airplane podemos ver que tiene una forma estrecha, con los valores de probabilidad altos concentrados en unos pocos niveles de gris, lo que se traduce en una imagen con un bajo contraste.

En el histograma de lenna podemos observar como la probabilidad de ocurrencia de cada uno de los niveles de gris est mejor repartida a lo largo de todos ellos, correspondiendo con una imagen de alto contraste.

4. REALCE DE IMGENES: ECUALIZACION DE HISTOGRAMAS. load clown ; I=ind2gray(X,map); % Convert an indexed image to an intensity image subplot(2,1,1),imhist(I,32); subplot(2,1,2),imshow(I,32);

Explique cada uno de los comandos para representar el numero de pixeles y la intensidad de cada sub intervalo

load clown :

Carga todas las variables de un archivo, en este caso del archivo con nombre clown

I=ind2gray(X,map):

Convierte la imagen X con mapa de color MAP a una imagen de intensidad I, esta funcin remueve el matiz y la informacin de saturacin mientras retiene la luminiscencia

subplot(2,1,1),imhist(I,32):

Grafica en una sub-ventana el histograma de la imagen I, con 32 sub-intervalo, en un intervalo de 0 a 1, en cada subintervalo se representa el nmero de pixeles cuya intensidad cae dentro del mismo

subplot(2,1,2),imshow(I,32):

Grafica en una sub-ventana la imagen cargada en I representada en dos dimensiones, en esta imagen se tiene una resolucin de 32 escalas de grises representado en el histograma; los pxeles forma la figura

Ejercicio: aplicar esta tcnica a la imagen obtenida anteriormente para los casos de 32 y 4 subintervalos. Comparar las imgenes e histogramas resultantes haciendo uso de los comandos subplot, imhist e imshow, y comentar el resultado.

En cada caso se ha ecualizado las imgenes para poder apreciar

load clown

I=ind2gray(X,map);

subplot(2,2,1),imhist(I,32);

subplot(2,2,2),imshow(I,32);

subplot(2,2,3),imhist(I,4);

subplot(2,2,4),imshow(I,4);

5. RESTAURACIN DE IMGENES.Que tipo de ruido se puede aadir a una imagen en matlab? Realice ejemplos grficos de cada no de ellos

poisson:

K=imnoise(I,'poisson');

subplot(1,2,1),imshow(I);title('imagen original'),

subplot(1,2,2);imshow(K),title('imagen ruido poisson')

gaussian: se caracteriza por tener un espectro de energa constante para todas las frecuencias. Cuando se presenta este problema, el valor exacto de cualquier pxel es diferente cada vez que se captura la misma imagen. Este efecto, suma o resta un determinado valor al nivel de gris real y es independiente de los valores que toma la imagen. K=imnoise(I,'gaussian'); subplot(1,2,1),imshow(I);title('imagen original'), subplot(1,2,2);imshow(K),title('imagen ruido gaussian')

localvar: Ruido blanco Gaussiano de Valor medio cero con una intensidad dependiente de la varianza

sal & pepper: ruido de pxeles prendido y apagadoK=imnoise(I,'salt & pepper');subplot(1,2,1),imshow(I);title('imagen original'),subplot(1,2,2);imshow(K),title('imagen ruido sal y pi')

speckle: ruido multiplicativoK=imnoise(I,'speckle',0.2);subplot(1,2,1),imshow(I);title('imagen original'),subplot(1,2,2);imshow(K),title('imagen ruido speck')

6. FILTRADO LINEAL Hd=zeros(11,11);

Hd(4:8,4:8)=ones(5,5);

h=fwind1(Hd,hamming(11)); [f1,f2]=freqspace([11 11]);

[x,y]=meshgrid(f1,f2);

colormap(jet(64))

subplot(1,2,1),surf(x,y,Hd),axis([- 1 1 -1 1 0 1.2]);

subplot(1,2,2),freqz2(h,[32 32]),axis([-1 1 -1 1 0 1.2]) ;

surf(x,y,h)

explicar la realizacin del filtro, y el enventanado utilizado: Se crea una matriz de Hd de dimensin 11x11 con valor cero

Remplazar con unos las posiciones 4 al 8

Hd =

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

luego se utiliza la funcin fwind1 la cual crea un filtro FIR (respuesta de impulso finita) bidimensional, utilizando el enventanado de una dimensin, en este caso el de Hamming que devuelve la ventana de Hamming simtrica en una matriz de 11 puntos.

Hamming(11): genero una vector columna 11x 1 , los coeficientes de la ventana de hamming es segn la ecuacin :

0.0800 0.1679 0.3979 0.6821 0.9121 1.0000 0.9121 0.6821 0.3979 0.0800 Fwind1: trabaja con ventanas en una dimensin para filtro FIR para generar un ventana simtrica de dos dimensiones

Freqspace :Determinar la frecuencia de espaciamiento de respuesta de frecuencia

[f1,f2]=freqspace(5)

f1 = -0.8000 -0.4000 0 0.4000 0.8000

f2 = -0.8000 -0.4000 0 0.4000 0.8000

Meshgrid: realiza la combinacin d e los dos vectores

[f1,f2]=freqspace(11, meshgrid);

f1 = -0.8000 -0.4000 0 0.4000 0.8000

-0.8000 -0.4000 0 0.4000 0.8000

-0.8000 -0.4000 0 0.4000 0.8000

-0.8000 -0.4000 0 0.4000 0.8000

-0.8000 -0.4000 0 0.4000 0.8000

f2 = -0.8000 -0.8000 -0.8000 -0.8000 -0.8000

-0.4000 -0.4000 -0.4000 -0.4000 -0.4000

0 0 0 0 0

0.4000 0.4000 0.4000 0.4000 0.4000

0.8000 0.8000 0.8000 0.8000 0.8000

Freqz2 : respuesta en frecuencia en dos dimensionesfreqz2(h,n1,n2) : Devuelve H, respuesta de frecuencia de h, y la frecuencia de los vectores f1 (n1 de longitud) y f2 (n2 de longitud). H es una de dos dimensiones filtro FIR, en la forma de una molcula computacional. F1 y f2 son devueltos como normalizaron las frecuencias en el rango de -1,0 a 1,0, donde 1,0 corresponde a la mitad de la frecuencia de muestreo, o radianes filter2(h,i); da el resultado de la convolucion del filtro (h) I la entrada que es la imagen(i) Ejercicio: aplicar el filtro diseado (haciendo uso de la funcin filter2) a la seal degradada y comparar las imgenes original, degradada y restaurada realice los comentarios correspondientes.

load clown;

i=ind2gray(X,map);

Hd=zeros(11,11);

Hd(4:8,4:8)=ones(5,5);

h=fwind1(Hd,hamming(11));% creamos el filtro lineal

r=imnoise(i,'poisson');

R=filter2(h,r);

%filtro al imagen con ruidoI=filter2(h,i);

%filtro al imagen original

subplot(2,2,1);imshow(i);title('imagen original')

subplot(2,2,2);imshow(I);title('filter imagen original')

subplot(2,2,3);imshow(r);title('imagen con ruido POISSON')

subplot(2,2,4);imshow(R);title('filtro imagen con ruido')

% subplot(fila ;columna;#)

7. ESCRIBIR UNA IMAJEN imwrite(J2,'kids2.png');

que parmetros se puede cambiar con el comando imwrite?

Se pueden modificar los siguientes parmetros

En el formato HDF:

Compresin Calidad

Modo de escritura

En el formato JPEG

Calidad

Comentario

Modo

Tamao de bit

En el formato TIFF

Espacio de color

Compresion

Descripcion

Resolucion

Modo de escritura

En el formato PNG

Autor

Descripcion

Copyright

Fecha de creacion

Sowftware

Descargo de responsibilidad

Advertancia

Recurso

Comentario

Tipo de entrelazado

Tamao de bit

Tranparencia

Fondo

Gama

Cromaticidades

Resolucion X

Resolucion Y

Resolucion de unidad

Alpha

Bits mas significativos

En el formato RAS

Tipo

Alpha

En los formatos PBM, PGM, and PPM

Codificacion

Valor maximo

8. COMPROBAR EL CONTENIDO DEL ARCHIVO ESCRITO imfinfo('kids.tif')

ans =

Filename:D:\VigoMuEvo\toolbox\images\imdemos\kids.tif'

FileModDate: '04-Dec-2000 13:57:58'

FileSize: 95162

Format: 'tif'

FormatVersion: []

Width: 318

Height: 400

BitDepth: 8

ColorType: 'indexed'

FormatSignature: [73 73 42 0]

ByteOrder: 'little-endian'

NewSubfileType: 0

BitsPerSample: 8

Compression: 'PackBits'

PhotometricInterpretation: 'RGB Palette'

StripOffsets: [16x1 double]

SamplesPerPixel: 1

RowsPerStrip: 25

StripByteCounts: [16x1 double]

XResolution: 72

YResolution: 72

ResolutionUnit: 'Inch'

Colormap: [256x3 double]

PlanarConfiguration: 'Chunky'

TileWidth: []

TileLength: []

TileOffsets: []

TileByteCounts: []

Orientation: 1

FillOrder: 1

GrayResponseUnit: 0.0100

MaxSampleValue: 255

MinSampleValue: 0

Thresholding: 1explicar cada una de las respuestas de imfinfo()

Imfinfo: Nos devuelve informacin acerca del archivo grafico especificado

Filename: Carcter que contiene el nombre del archivo

FileModDate: Carcter que contiene la modificacin de la fecha del archivo

FileSize: Un entero que indica el tamao del archivo en bytes

Format: Un carcter que contiene el formato del archive

FormatVersion: Un carcter o numero la versin del formato del archivo

Ancho: Un entero que indica el ancho de la imagen en pixels

Height: Un entero que indica la altura de la imagen en pixels

Tamao de bit: Un entero que indica el nmero de bits por pxel

Color Type: Un entero que indica el tipo de imagen como 'truecolor' para un color verdadero RGB) 'grayscale' para la intensidad de una escala de grises o 'indexed', para una imagen indexada

Con que tipos de imagines trabaja matlab? La propiedad ms bsica de una imagen es su modo. Hay tres modos posibles: RGB, escala de grises, e indexado.

RGB son las iniciales en ingls de rojo, verde y azul, e indica que cada punto de la imagen es representado por un nivel de rojo, un nivel de verde, y un nivel de azul. Dado que todos los colores distinguibles por los seres humanos se puede representar por una combinacin de estos colores, las imgenes RGB son a todo color. Cada canal de color tiene 256 niveles de intensidad posibles. Para ms detalles.

En una imagen de escala de grises, cada punto es representado por un valor de brillo, que va desde el 0 (negro) hasta el 255 (blanco), con valores intermedios que representan diferentes niveles de gris.

El modo indexado ha sido inventado por Compuserve en los inicios de la Web para crear pequeos archivos de imgenes a color, para que pudieran ser transmitidos fcilmente. GIF (Graphic Interchange Format) fue el primer formato indexado.

El mtodo consiste en dar cdigos a cada pxel y adjuntar al archivo una tabla con el color correspondiente a cada cdigo. Los pxeles con el mismo cdigo comparten el mismo color.

Puedee ver la paleta de una imagen abierta una imagen GIF empleando el dilogo Dilogos Paleta indexada. Adems le permite editar y modificar cada color.

http://docs.gimp.org/es/gimp-images-in.htmlQue es una imagen indexada?Estimado usuario: Es lgico que con las imgenes indexadas no se te permita modificarlas, simplemente tienes que cambiarles el modo para poder comenzar a trabajar con ellas. Abre la imagen en photoshop, vete a modo y te saldr indexado. Cmbialo a RGB o CMYK (el primero es el ms aconsejable para trabajar con filtros), ahora ya puedes trabajar con tu imagen.

Abr una foto en photoshop y queria duplicar una capa pero no me deja. En la foto aparece la palabra "INDEXADO". Que significa esto y como puedo solucionarlo para poder trabajar con la foto?

Imagen indexada. Esta es una forma prctica de representar imgenes en color. Una imagen indexada almacena una imagen como dos matrices. La primera matriz tiene el mismo tamao que la imagen y un nmero para cada pxel. La segunda matriz se denomina mapa de color y su tamao puede diferir del de la imagen. Los nmeros de la primera matriz son una instruccin de qu color usar segn el mapa de color.

As que todas las imgenes indexadas tienen un mapa de color asociado del que no te puedes salir, de hecho si intentas pintar con un color RGB que tu elijas aleatoriamente, automticamente el programa te pintar con el color ms cercano pero que est dentro del mapa de color de la imagen. Te debe sonar lo de mapa de color web, ese es el ms conocido.Tipos de imgenes (segn tipo de

de dato de sus elementos)

El tipo de dato matriz, que contendr una imagen puede

ser de varios tipos (segn el tipo de dato de cada pixel):

double Doble precisin, nmeros en punto flotante que

varan en un rango aproximado de -10308 a 10308 (8

bytes por elmento)

uint8 Enteros de 8 bits en el rango de [0,255] (1 byte por

elemento)

uint16 Enteros de 16 bits en el rango de [0, 65535] (2

bytes por elemento)

uint32 Enteros de 32 bits en el rango de [0, 4294967295]

(4 bytes por elemento)

int8 Enteros de 8 bits en el rango de [-128, 127] (1 byte

por elemento)for i=1:318

for j=1:318

r=double(y(i,j)) ;

% w=log(1+r)

s(i,j)=1*log(1+r) ;

a=a+1;

end

end

figure(2),imshow(s)

e=0:255;

w=0.1*log(1+e); figure(3),plot(e,w) y=imread('kids.tif');

figure(1),imshow(y)

a=1;

for i=1:318

for j=1:318

r(a)=double(y(i,j)) ;

% w=log(1+r)

s(i,j)=1*log(1+r(a)) ;

a=a+1;

end

end

figure(2),imshow(s)

figure(3) , plot(r,s)

El tratamiento de imgenes ms empleado y conocido, es el tratamiento espacial tambin conocido como convolucin. Las convoluciones discretas son muy usadas en el procesado de imagen para el suavizado de imgenes, el afilado de imgenes, deteccin de bordes, y otros efectos. Mediante este proceso se calcula el valor de un determinado punto en funcin de su valor y del valor de los puntos que le rodean, aplicando una simple operacin matemtica en funcin de la cual se obtendr un valor resultante para el punto en cuestin. La operacin de la convolucin puede representarse como la siguiente operacin:

g(x,y) = f(x,y) a(x,y)donde a(x,y) es la funcin respuesta al impulso del filtro a aplicar (o mscara de convolucin), f(x,y) es la imagen de entrada y g(x,y) es la imagen filtrada. Las expresiones matemticas para el caso bidimensional son las siguientes:continuo

discreto

La suma de los pesos en la mscara de convolucin afecta a la intensidad general de la imagen resultante. Muchas mscaras de convolucin tienen coeficientes que suman un total de 1 (como los filtros paso bajo usados en el suavizado de imagen). Es este caso, la imagen convolucionada tendr la misma intensidad media que la imagen original. Algunas mscaras de convolucin (como las usadas en deteccin de bordes) tienen coeficientes positivos y negativos y suman un total de 0, en esta situacin se generarn valores de pxeles negativos. En caso de que nos salgamos del rango impuesto para la imagen f(x,y), bien porque necesitemos utilizar mscaras cuya suma de valores sea mayor que la unidad o porque utilicemos mscaras con coeficientes negativos, debemos normalizar el resultado aplicando la funcin ms adecuada en cada caso.

Existe una gran variedad de mscaras que realizan diferentes acciones sobre una imagen. Las hay que suavizan los bordes, otras que limpian la imagen, otras que la oscurecen, etc. Las mscaras, como operadores lineales ms utilizados, suelen ser de los de paso bajo, paso alto y deteccin de bordes. Por ejemplo, mediante la siguiente matriz no se realiza ningn cambio a la imagen:0 0 0

0 1 0

0 0 0

El tamao de la mscara podra ser arbitrario, e incluso no restringido a matrices cuadradas, por lo que se podra utilizar perfectamente matrices rectangulares. Pero nos limitaremos a que la mayora de los procesados utilicen mscaras cuadradas de tamao 3x3, ya que para comprender su funcionamiento son las mscaras ms simples. Una cosa que se aprende con rapidez es que cuando la mscara de convolucin aumenta de tamao, la carga computacional aumenta exponencialmente.

La primera cuestin al implementar una funcin de convolucin es como tratar los bordes de la imagen. Cuando la ventana de convolucin se centra en el primer pxel de una imagen en (0,0), la ventana deslizante sobresale de la imagen en el borde superior y en el izquierdo. Qu valores de la imagen deben ser multiplicados por esos coeficientes de convolucin que sobresalen de los bordes?

Hay varias maneras para solucionar este problema.

La primera solucin es tratar las celdas vacas en la ventana de convolucin como ceros. Esto se conoce como zero-padding. Es fcil de realizar pero no es una buena idea si los bordes de la imagen resultante son tan importantes como el resto de la imagen.

La siguiente solucin es empezar la convolucin en la primera posicin donde la ventana no sobresalga de la imagen. Si la mscara de convolucin es de tamao 3x3, se empezara convolucionando con el pxel en (1,1) en vez del pxel en (0,0). Este mtodo es sencillo de implementar. En la imagen de salida, los bordes convolucionados son copiados para crear una imagen con el mismo tamao que la imagen de entrada.

Otros mtodos amplan la imagen antes de convolucionarla. Una forma de hacerlo es duplicar los bordes. Usando una mscara 3x3, se copiaran la filas superior e inferior, as como las columnas izquierda y derecha.

El otro mtodo es envolver la imagen, es decir, considerar como pxel contiguo al del borde izquierdo, el pxel del borde derecho y viceversa, as como con los del borde superior e inferior. Si se quiere convolucionar una imagen 256x256 con una mscara de convolucin de 3x3, la primera ventana de convolucin opera con los pxeles en las posiciones que se ven en la siguiente figura. Este ltimo mtodo ha sido el empleado en la implementacin de la aplicacin.

PAGE _______________________________________________________________________________

Procesamiento digital de imgenes - 21 -