Вы находитесь на странице: 1из 32

UNIVERSIDAD DE CONCEPCIN

FACULTAD DE INGENIERA
DEPARTAMENTO DE INGENIERA ELCTRICA

Procesamiento Digital de Seales (543728-1)

Tarea #1

Alumnos:
Diego Alonso Jara Crdenas
Jorge Alejandro vila Morales

Nombre Profesor Gua:


Pamela Beatriz Guevara Alves.
2

Concepcin, 12 de septiembre del 2014


3

INDICE

Ejercicio1: Histograma A).....Pg. 3

Ejercicio1: Histograma B).........Pg. 5

Ejercicio1: Histograma C).....Pg. 5

Ejercicio2: Convolucin A)... ...Pg. 6

Ejercicio2: Convolucin B)... ...Pg. 6

Ejercicio2: Convolucin C)... ...Pg. 7

Ejercicio2: Convolucin D)... ...Pg. 8

Ejercicio3: Media Mvil y Submuestreo A).....Pg. 9

Ejercicio3: Media Mvil y Submuestreo B)........Pg. 13

Ejercicio3: Media Mvil y Submuestreo C)........Pg. 14

Ejercicio3: Media Mvil y Submuestreo D)...........Pg. 15

Ejercicio4: Filtrado de Imgenes con F.D.C.E.H. A)..Pg. 16

Ejercicio4: Filtrado de Imgenes con F.D.C.E.H. B)..Pg. 21

Anexo..Pg. 22
4

Ejercicio 1: Histograma.

Considere la siguiente secuencia: y{k} = { 5, 6, 2, 7, 9, 10, 12, 3, 5, 1, 2, 3, 8, 5, 3, 1, 5, 8, 5, 3, 4,


7, 8, 4, 2, 1, 3, 8, 4, 2 }.

Utilizando las frmulas vistas en clases (no funciones de MATLAB):

a) Grafique la secuencia. Calcule y grafique el histograma y el histograma acumulativo de la


secuencia (use la funcin stem en todos los casos). Comente.

A continuacin, se presenta la grfica de la secuencia y{k}:

Figura A.1.1. Grfico de secuencia y{k}.

Luego, ordenando la secuencia y{k} de menor a mayor, se observa la cantidad de componentes


repetidas y se procede al clculo de su Histograma.

y { k }=[11 12 2 22 3 3 33 3 4 4 4 5 5 55 5 6 7 7 8 8 8 8 9 10 12]

Por ende:
N
Hist ( k )= k ,Y (i) , k =0,1, , M 1 (1.2)
i=1

Hist(0) = 0
Hist(1) = 3
Hist(2) = 4
Hist(3) = 5
Hist(4) = 3
5

Hist(5) = 5
Hist(6) = 1
Hist(7) = 2
Hist(8) = 4
Hist(9) = 1
Hist(10) = 1
Hist(11) = 0
Hist(12) = 1

Por lo tanto, la grfica del Histograma es:

Figura A.1.2. Grfico de Histograma y{k}.

Finalmente, para el clculo del Histograma Acumulativo:


k
HistA ( k )= Hist (i) (1.1)
i=0

HistA(0) = 0
HistA(1) = 3
HistA(2) = 7
HistA(3) = 12
HistA(4) = 15
HistA(5) = 20
HistA(6) = 21
HistA(7) = 23
HistA(8) = 27
HistA(9) = 28
HistA(10) = 29
6

HistA(11) = 29
HistA(12) = 30
Luego la grfica correspondiente al Histograma Acumulativo es:

Figura A.1.3. Grfico de Histograma Acumulado y{k}.

b) Determine la probabilidad de encontrar un valor exactamente igual a 5. Justifique.

Para determinar la probabilidad de encontrar un valor exactamente igual a 5, se debe ir a la grafica


de la figura A.1.2. en donde se puede observar que el nmero de repeticiones para el valor 5 es igual
a 5, luego teniendo en cuenta que el nmero total de datos es 30, la probabilidad de encontrar un
valor igual a 5 es:

h (5 ) 1
P ( 5 )= p (5)= .
30 6

c) Determine la probabilidad de encontrar un valor y = x, tal que 3 < x 6. Justifique.

Para determinar la probabilidad de encontrar un valor que sea mayor a 3 y menor o igual a 6, se debe
analizar el grafico de la figura A.1.3. en el cual se sabe que:

HistA ( 6 )HistA ( 3 ) 9
P (3< x 6 )= P ( 3< x 6 )= .
30 30
7

Ejercicio 2: Convolucin.

a) Calcule y dibuje la convolucin h{k} = y{k}*f{k} entre la secuencia y{k} y la secuencia: f{k}
= { 1, 1, 1 }, que comienza en k=0. Utilice el comando conv de MATLAB. Grafique tambin las
seales de entrada (y{k} y f{k}). Cul es el efecto de este filtro?

Utilizando el comando conv de MATLAB, logramos obtener la convolucin entre y{k} y f{k}, con
el resultado:
h { k } ={5, 11,13, 15, 18,26, 31,25, 20, 9, 8,6, 13,16, 16, 9, 9,14, 18,16, 12,14, 19,19, 15,14,
6, 2,14, 7,6, 12 }

Luego, graficando las seales, se obtiene la figura A.2.1:

Figura A.2.1. Seales y{k} rojo, f{k} azul y h{k}=y{k}*f{k} verde

El filtro dado por la convolucin anterior, consiste simplemente en una suma de la seal y{k},
y{k-1} e y{k-2}. Es decir, amplifica la seal original, sumndole a cada elemento los dos siguientes.

b) Calcule nuevamente la Convolucin, utilizando las propiedades de sta y slo sumas de


y{k}. Comente.

Utilizando las propiedades de convolucin y solo sumas de y{k}, podemos expresar:

h { k } = y { k }( { k } + { k1 }+ { k 2 } )

h { k } = y { k } { k } + y { k } { k 1 } + y { k } { k 2 }

h { k } = y { k } + y { k1 } + y {k 2 } (2.1)
8

Luego, usando la expresin (2.1), obtenida a partir de las propiedades, es posible calcular h{k}
utilizando MATLAB, obtenindose el grfico de la figura B.2.1:

Figura B.2.1. Grfico de h{k}=y{k}*f{k}, calculado a partir de propiedades.

c) Calcule y dibuje la Convolucin de y{k} y la seal g{k} = { 2, 2, 2 }, que comienza en k=2.


Comente.

Calculando la convolucin con el comando conv de MATLAB, podemos obtener la expresin


j{k}=y{k}*g{k}, dada por:

j { k } ={ 0, 0, 10, 22 , 26, 30, 36,52, 62,50, 40,18, 16,12, 26, 32, 32, 18, 18, 28, 36, 32,24,
28,38, 38, 28, 14, 12, 24, 30, 28, 12, 4}
Graficando las seales, se obtiene la figura C.2.1:
9

Figura C.2.1. Grficos seales y{k} azul, g{k} roja y j{k}=y{k}*g{k} verde.
Al igual que en el tem A) podemos notar que el efecto de este filtro, es aumentar la seal sumando
los valores siguientes al elemento, los cuales estn definidos por el retraso de los impulsos de la
seal g.

d) Calcule y dibuje la Convolucin de y{k} y g{k}, pero ahora utilizando el resultado de a) b),
y las propiedades de la Convolucin.

Utilizando las propiedades de la convolucin, se obtiene la expresin:

j { k } = y { k }2 ( { k2 } + { k3 }+ { k 4 } )

j { k } =2[ y { k2 }+ y { k3 } + y { k 4 } ]

j { k } =2 h { k 2 } (2.2)

Graficando la expresin (2.2) en MATLAB, se obtiene la figura D.2.1:

Figura D.2.1. Grfico j{k}=y{k}*g{k} calculado por propiedades.

e) Utilice un clculo y un grfico para demostrar que los resultados en c) y d) son iguales.

Calculando el error absoluto de j{k} calculado en C) y j2{k} calculado en D): se obtiene

e { k }= j { k } j 2 { k }

e { k }={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}

Graficando e{k} en MATLAB, se obtiene el grfico dado por la figura E.2.1:


10

Figura E.2.1. Grfico error e{k}=j{k}-j2{k} calculados en C) y D) respectivamente.

Ejercicio 3: Media Mvil y Submuestreo.

a) Calcule y dibuje la media mvil de la seal y{k} para L=3.


Para el clculo de la media mvil utilice las dos frmulas vistas en clases y asumiendo valores
cero para k negativos. Ambos algoritmos deben dar los mismos resultados (valores iguales
para los mismos k).

Se debe tener en cuenta que las frmulas de Media Mvil vista en clases corresponden a:
k
1
x avg ( k )= x (i)
L i=kL+1
(3.1)

x ( k )x (k L)
x avg ( k )=x avg ( k1 )+ (3.2)
L

Luego, por enunciado, se considerar un valor igual a cero para todos los valores posibles en que el
tiempo discreto k sea negativo, por ende:

Con Ecuacin (3.1):

k
1
x avg ( k )= x (i)
L i=kL+1
11

Figura A.3.1. Grfico Media Mvil calculado por medio de la Ec. (3.1).

En donde se tiene (considerando desde i=1 para efectos de clculo en MATLAB):


1 1
1
x avg ( 1 ) = x( i)= 13 x (i)= 13 ( x (1 ) + x (0 ) + x (1 ) ) = 31 ( 0+0+5 )= 53 .
3 i=13 +1 i=1
2 2
1 1 1 1 11
x avg ( 2 ) = x (i)= x (i)= ( x ( 0 ) + x ( 1 ) + x ( 2 ) )= ( 0+5+ 6 )= .
3 i=23 +1 3 i=0 3 3 3
3 3
1 1 1 1 13
x avg ( 3 )=
3 i=33+1
x (i)= x (i)= ( x ( 1 ) + x ( 2 ) + x ( 3 ) )= ( 5+6+ 2 )=
3 i=1 3 3 3
.
4 4
1 1 1 1
x avg ( 4 ) =
3 i=43+1
x (i)= x (i)= ( x ( 2 ) + x (3 )+ x ( 4 ) )= ( 6+2+7 ) =5 .
3 i=2 3 3
.
.
.
29 29
1 1 1 1
x avg ( 29 )=
3 i=293 +1
x (i)= x (i )= ( x (27 ) + x ( 28 ) + x ( 29 ) )= ( 3+ 8+4 )=5 .
3 i=27 3 3

30 30
1 1 1 1 14
x avg ( 30 )=
3 i=303 +1
x (i)= x (i)= ( x ( 28 )+ x ( 29 ) + x ( 30 )) = ( 8+ 4+2 ) =
3 i=28 3 3 3
.

Luego, se puede ver claramente que los valores coinciden con los de la grfica de la figura A.3.1.

Con Ecuacin (3.2):

x ( k )x (k L)
x avg ( k )=x avg ( k1 )+
L
12

Figura A.3.2. Grfico Media Mvil calculado por medio de la Ec. (3.2).

En donde se tiene (considerando desde i=1 para efectos de clculo en MATLAB):

Obs: La ecuacin necesita valores en tiempo pasado para construir sus nuevas componentes, es
por eso que se mostrar el desarrollo completo del algoritmo, paso a paso.

x ( 1 ) x( 13) x (1 ) x(2) 50 5
x avg ( 1 ) =x avg ( 0 )+ =x avg ( 0 )+ =0+ = .
3 3 3 3
x ( 2 )x (23) x ( 2 )x (1) 5 60 11
x avg ( 2 ) =x avg ( 1 ) + =x avg ( 1 ) + = + = .
3 3 3 3 3
x ( 3 )x (33) x ( 3 )x (0) 11 20 13
x avg ( 3 )=x avg (2 )+ =x avg ( 2 )+ = + = .
3 3 3 3 3
x ( 4 ) x(43) x ( 4 )x (1) 13 75
x avg ( 4 ) =x avg ( 3 )+ =x avg ( 3 )+ = + =5 .
3 3 3 3
x ( 5 )x (53) x (5 )x (2) 96
x avg ( 5 )=x avg ( 4 ) + =x avg ( 4 )+ =5+ =6 .
3 3 3
x ( 6 )x (63) x ( 6 )x (3) 102 26
x avg ( 6 )=x avg ( 5 ) + =x avg ( 5 )+ =6+ = .
3 3 3 3
x ( 7 )x (73) x ( 7 )x ( 4) 26 1 27 31
x avg ( 7 )=x avg ( 6 ) + =x avg ( 6 ) + = + = .
3 3 3 3 3
x ( 8 )x ( 83) x ( 8 )x (5) 31 39 25
x avg ( 8 )=x avg ( 7 ) + =x avg ( 7 )+ = + = .
3 3 3 3 3
x ( 9 ) x( 93) x ( 9 )x (6) 25 510 20
x avg ( 9 )=x avg ( 8 ) + =x avg ( 8 ) + = + = .
3 3 3 3 3
x ( 10 )x (103) x ( 10 ) x(7) 20 112
x avg ( 10 )=x avg ( 9 )+ =x avg ( 9 ) + = + =3 .
3 3 3 3
13

x (11 )x (113) x ( 11 ) x (8) 23 8


x avg ( 11 )=x avg (10 )+ = xavg ( 10 ) + =3+ = .
3 3 3 3
x ( 12 ) x(123) x ( 12 )x ( 9) 8 35
x avg ( 12 ) =xavg ( 11 )+ = xavg ( 11 ) + = + =2 .
3 3 3 3
x ( 13 )x (133) x ( 13 )x (10) 81 13
x avg ( 13 )=x avg ( 1 2 ) + =x avg ( 1 2 ) + =2+ = .
3 3 3 3
x ( 14 ) x(143) x ( 14 ) x(11) 13 52 16
x avg ( 14 )=x avg ( 13 ) + =x avg ( 13 ) + = + = .
3 3 3 3 3
x ( 15 )x (153) x ( 15 )x (12) 16 33 16
x avg ( 15 )=x avg ( 14 ) + =x avg ( 14 )+ = + = .
3 3 3 3 3
x (16 )x (163) x ( 16 ) x(13) 16 18
x avg ( 16 )=x avg (15 )+ =x avg ( 15 ) + = + =3 .
3 3 3 3
x ( 17 )x (173) x ( 17 )x (14) 55
x avg ( 17 )=x avg (16 ) + =x avg ( 16 )+ =3+ =3 .
3 3 3
x (18 )x (183) x ( 18 )x (15) 83 14
x avg ( 18 )=x avg ( 17 )+ =x avg ( 17 ) + =3+ = .
3 3 3 3
x ( 19 )x (193) x (19 )x (16) 14 51
x avg ( 19 )=x avg ( 18 )+ =x avg (18 )+ = + =6 .
3 3 3 3
x ( 20 )x (203) x ( 20 )x (17) 35 16
x avg ( 20 )=x avg (19 )+ =x avg ( 19 ) + =6+ = .
3 3 3 3
x ( 21 )x (213) x ( 21 )x (18) 16 48
x avg ( 21 ) =x avg ( 2 0 ) + =x avg ( 2 0 ) + = + =4 .
3 3 3 3
x ( 22 )x (223) x ( 22 )x (19) 75 14
x avg ( 22 ) =x avg ( 2 1 ) + =x avg ( 21 ) + =4 + = .
3 3 3 3
x ( 2 3 )x (2 33) x ( 2 3 )x (2 0) 14 83 19
x avg ( 23 )=x avg (2 2 ) + =x avg ( 22 ) + = + = .
3 3 3 3 3
x ( 24 )x (243) x ( 24 )x (21) 19 44 19
x avg ( 24 )=x avg ( 23 )+ =x avg ( 23 )+ = + = .
3 3 3 3 3
x ( 25 ) x(253) x ( 25 )x (22) 19 27 14
x avg ( 25 )=x avg (2 4 ) + =x avg ( 2 4 ) + = + = .
3 3 3 3 3
x ( 26 )x (263) x ( 26 )x (23) 14 18 7
x avg ( 26 )=x avg ( 25 ) + =x avg ( 2 5 )+ = + = .
3 3 3 3 3
x ( 27 )x (273) x ( 27 )x (24) 7 34
x avg ( 27 )=x avg ( 26 )+ =x avg ( 2 6 ) + = + =2 .
3 3 3 3
x ( 28 )x (283) x (28 )x (25) 82
x avg ( 28 )=x avg (2 7 ) + =x avg ( 27 )+ =2+ =4 .
3 3 3
x ( 29 )x (293) x ( 29 )x (26) 41
x avg ( 29 )=x avg ( 28 )+ =x avg ( 28 ) + =4+ =5 .
3 3 3
x (30 )x (303) x ( 30 )x (27) 23 14
x avg ( 30 )=x avg ( 29 )+ =x avg ( 29 ) + =5+ = .
3 3 3 3
14

Figura A.3.3. Grfico Comparacin Media Mvil calculado por medio de las Ec.(3.1) y (3.2).

Por lo que se puede concluir que ambas graficas son idnticas, y al mismo tiempo se demuestra que
cualquiera de las dos ecuaciones es vlida para el clculo de la Media Mvil.
b) Calcule la media mvil mediante una Convolucin. Debe dar el mismo resultado que para
a) (valores iguales para los mismos k).

Para calcular en este caso la Media Mvil, se debe convolucionar f{k}=(1,1,1) con el vector de la
secuencia y{k}, pero con la precaucin de que f{k} est normalizado, lo que se traduce a:

1
f {k}= [1,1,1]
3

Luego por definicin de Convolucin:



h( kT )=f (kT )g(kT )= f ( kT iT ) g(iT ) (3.3)
i=

Resultando (a travs de MATLAB):

h( kT )=[5 /3,11/3,13/3,5,6,26/3,31/3,25/3,20/3,3,8/3,2,13/3,16/ 3,16 /3,3,3,14 /3,6,16/ 3,4,14 /3,19 /3,19 /3,14

En donde se puede notar la aparicin de dos nuevas componentes, las cuales corresponden a los
valores aproximados promedios del mtodo de la Convolucin, ya que al momento de ir
desplazando el vector f {k} hacia la derecha (efecto de Convolucin), f {k} termina su
desplazamiento con dos multiplicaciones extras, ya que se compone de tres impulsos unitarios.

Luego, la grfica correspondiente a la Media Mvil mediante Convolucin es:


15

Figura B.3.1. Grfico Media Mvil calculado por medio de la Ec.(3.3).

Se puede notar el efecto de la media mvil como contraste con la secuencia y{k}, ya que la media
mvil es una curva que suele aproximarse como promedio en funcin del tiempo a los datos
discretos del enunciado (entrada),caso contrario al de la media, que solo se traza una recta (tpica
Ec. de la recta).

Por otro lado, se puede apreciar que la media mvil calculada por Convolucin es exactamente la
misma que las calculadas anteriormente por otros mtodos, a excepcin de los ltimos dos valores
mencionados con anterioridad.

c) Submuestree la secuencia utilizando los comandos de MATLAB downsample y decimate,


tomando una muestra sobre 2. Dibuje las tres seales (original y las 2 submuestradas) en un
mismo grfico. Asegrese de definir adecuadamente el vector k en cada caso. Explique qu
realiza cada comando y comente.

A continuacin, se definirn brevemente las acciones que realiza cada comando:

1. Downsample: Toma el vector de la seal de entrada (discreta) y genera un nuevo vector con
los mismos valores del vector original pero con una muestra sobre N valores, por ejemplo:

Si se tiene un vector de entrada: x=[0,1,2,3,4,5,6,7,8,9] y se submuestrea con el comando


Downsample con una muestra cada dos valores, el nuevo vector generado ser
x=[0,2,4,6,8].

2. Decimate: Al igual que el comando Downsample, se toma el vector de la seal original y


la submuestrea en una muestra sobre N valores y para finalizar se le aplica un filtro pasa
bajos Chebyshev de orden 8, tipo I, con una frecuencia de corte igual a 0.8 (Fs/2)/N .
16

Luego, se tiene la grfica de comparacin entre las seales:

Figura C.3.1. Grfico de Secuencias con y sin filtro calculado por medio de algoritmos.

En el grfico de la Figura C.3.1 se puede ver que la curva de Submuestreo Downsample


efectivamente es idntica a y{k}, solo que toma 1 valor cada 2 muestras, el efecto visual de la curva
la hace ms distinta ya que MATLAB un los puntos por el algoritmo de mnimos cuadrados.
Finalmente para el caso de la curva submuestreada y filtrada por Decimate, es importante destacar
que tiene un mayor parecido a la curva original en el sentido de que la curva no se pierde para
grandes variaciones de la seal original (por esto el filtro pasa bajos), esto es fcil de ver para el
intervalo de tiempo KT=2530, es decir, la perdida de informacin es menor a la producida por
Downsample, se podra concluir que para efectos de Submuestreo por error, la mejor forma de
recuperar la informacin es a travs de Decimate, pero dependiendo el caso, el algoritmo de
Downsample podra tener una mayor similitud como lo es en el intervalo de KT=0..13.

d) Ahora, Submuestree la secuencia utilizando downsample, pero tomando como seal de


entrada a la seal filtrada mediante media mvil obtenida en a). Dibuje la seal obtenida, la
seal original, y la seal submuestrada en c) con decimate en un mismo grfico. Nuevamente
asegrese de definir adecuadamente el vector k en cada caso. Comente.

Para este caso, se tiene la siguiente grfica:


17

Figura D.3.1. Grfico Comparacin Media Mvil con y sin filtros.

Se puede observar que la seal de Media Mvil original coincide con la seal misma pero filtrada
con Downsample por cada dos muestras, mientras que la seal de la secuencia y{k} filtrada con el
comando Decimate logra una similitud con la seal filtrada con Downsample pero con un
desfase de una unidad de tiempo.

Ejercicio 4: Filtrado de Imgenes con Filtros de Convolucin e Histograma.

a) Lea la imagen con ruido lizard.png y aplquele un filtrado de manera de obtener una
imagen en RGB con una reduccin del ruido. Para ello, realice el filtrado con un filtro media y
uno gaussiano (utilice comando conv2 de MATLAB).
Filtre cada una de las bandas de la imagen original (R, G y B) por separado. El resultado final
ser una imagen compuesta por las tres bandas filtradas por separado.
Grafique la imagen original y las resultantes, tanto para cada componente (R, G y B), como
para la imagen compuesta, en cada caso.

Filtrando con filtro media para cada una de las bandas (R,G y B) por separado, obtenemos las
imgenes dadas por las figuras A.4.1, A.4.2 y A.4.3, para distintos tamaos de mscaras:
18

Figura A.4.1. Imgenes de bandas filtradas con filtro media 25x25

Figura A.4.2. Imgenes de bandas filtradas con filtro media 50x50

Figura A.4.3. Imgenes de bandas filtradas con filtro media 50x50

Para las imgenes compuestas del filtro media de cada tamao de mscara estn graficados en la
figura A.4.4:
19

Figura A.4.4. Imagen original y filtradas por filtro media de distintos tamaos.

Para el caso del filtro media, se puede observar mayor distorsin para valores de mascara no tan
grandes, con respecto a la cantidad de pixeles que posee la imagen original. Este filtro, a pesar de
20

disminuir el nivel de ruido, observamos que no es muy recomendable de utilizar, al disminuir la


calidad de imagen considerablemente.

Filtrando con filtro gaussiano para cada una de las bandas (R,G y B) por separado, obtenemos las
imgenes dadas por las figuras A.4.5, A.4.6 y A.4.7, para distintos tamaos de mscaras y desviacin
estndar de 3:

Figura A.4.5. Imgenes de bandas filtradas con filtro gaussiano 25x25

Figura A.4.6. Imgenes de bandas filtradas con filtro gaussiano 50x50

Figura A.4.7. Imgenes de bandas filtradas con filtro gaussiano 100x100


21

Figura A.4.8. Imagen original y filtradas por filtro gaussiano de distintos tamaos y desv.est.: 3.
22

Para el caso del filtro gaussiano, se observa mejor respuesta al filtrado, con poca alteracin a la
calidad de la imagen original, y disminuyendo considerablemente el ruido.

Esto se puede deber al tipo de ruido de la imagen. Si la imagen posee ruido de distribucin
gaussiana, lo ms probable es que este filtro sea el ms efectivo para eliminarlo con la menor
prdida de calidad en la imagen.

b) Transforme a escala de grises la imagen leda en a). A este resultado aplique los mismos
filtros utilizados en a). Grafique y observe qu ocurre con el histograma de la imagen en escala
de grises con ruido, y con las que resultan del filtrado (puede utilizar el comando de MATLAB
para el clculo del histograma).

Convirtiendo la imagen original a escala de grises, podemos utilizar los filtros, sin necesidad de
separar las bandas RGB, ya que este tipo de imgenes no posee dichas bandas, lo que constituye a
un tiempo de clculo menor para el software de programacin y un anlisis del histograma ms
simplificado.

Podemos observar las imgenes en escala de grises para los filtros utilizados en el tem anterior en la
figura B.4.1:

Figura B.4.1. Imagen original en escala de grises e imgenes filtradas por filtro media y gaussiano.

En esta comparacin, podemos observar un resultado parecido al obtenido en el tem A), ya que el
ruido de la imagen original, es disminuido al utilizar los filtros media y gaussiano. Para esta
actividad, se utilizaron los filtros media 25x25 y gaussiano 25x25 desv. Estndar: 3, ya que tuvieron
mejor disminucin de ruido, sin alterar demasiado la calidad de la imagen.

Finalmente, analizando el histograma para la imagen original en comparacin a las imgenes


obtenidas por los distintos filtros, podemos realizar una comparacin partir de los histogramas
obtenidos en la figura B.4.2:
23

Figura B.4.2. Histograma imgenes en escala de grises, original, filtro media 25x25 y gaussiano 25x25

A partir de esta figura, es fcil observar como la variacin de colores disminuye, esto se ve reflejado
en la disminucin de los picos luego de aplicar los filtros.
Para el caso del filtro media, an quedan algunos picos que demuestran la presencia de ruido en este
caso, en cambio, para el filtro gaussiano, los picos son mucho ms suaves, conservando el valor
medio dado por el histograma de la imagen en general.

Tambin se puede observar un aspecto importante en los histogramas en el agregado de valores en


gran cantidad de puntos que eran mucho ms bajos. Esto debido al promediado efectuado por los
filtros, lo que afecta prcticamente a la definicin de los detalles de la imagen original.
24

Anexo Cdigos MATLAB:

Ejercicio 1:

%Tarea 1 PDS, Ejercicio 1:


% OBS: hist() pertenece a un vector, no funcion MATLAB.
%% Parte A):

clear all
clc
close all

x=[5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];
X=sort(x); %Secuencia ordenada de menor a mayor

for i=1:30
k(i)=i-1;
end

for i=1:12
hist(i)=0;
end

%Grafico de la secuencia:

stem(k,x,'filled','b','linewidth',2)
grid on
title('Grafico Secuencia','fontsize',15);
xlabel('Tiempo discreto kT','fontsize',12);
ylabel('Magnitud seal Impulsos','fontsize',12);
xlim([-1 31]);
ylim([0 13]);
%%
%Para graficar el histograma debemos saber cuantas veces se repite cada
%numero perteneciente a la secuencia, para ello se trabajara con la
%secuencia ordenada de menor a mayor "X=sort(x)".

for count=1:12
aux=0;

for i=1:30
if count==X(i)
aux=aux+1;
end
end
hist(count)=aux; %Vector para el Histograma
end

for i=1:12
k1(i)=i;
end

stem(0,0,'filled','r','linewidth',3);
hold on
stem(k1,hist,'filled','r','linewidth',3);
25

grid on
title('Histograma','fontsize',15)
xlabel('Datos','fontsize',12)
ylabel('Repeticiones','fontsize',12)
xlim([-1 13])
ylim([0 6])

%% Histograma Acumulativo
aux1=0;
for count1=1:12

for i=1:30
if count1==X(i)
aux1=aux1+1;
end
end
hist1(count1)=aux1; %Vector para el Histograma
end
stem(0,0,'filled','g','linewidth',3);
hold on
stem(k1,hist1,'filled','g','linewidth',3);
grid on
title('Histograma Acumulado','fontsize',15)
xlabel('Datos','fontsize',12)
ylabel('Magnitud','fontsize',12)
xlim([-1 13])
ylim([0 31])

Ejercicio 2:

%%EJERCICIO 2: CONVOLUCION

%% PARTE A)
clear all
close all
clc
y= [5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];
f= [1,1,1];

%Calculando convolucion con comando conv:


h= conv(y,f);

figure(1)
k=0:length(y)-1;
subplot(3,1,1); stem(k,y,'r'); title('Seal y(k)','fontsize',13);
xlabel('k'); grid on;

k=0:length(f)-1;
subplot(3,1,2); stem(k,f,'b'); title('Seal f(k)','fontsize',13);
xlabel('k'); grid on;

k=0:length(h)-1;
subplot(3,1,3); stem(k,h,'g'); title('Convolucion de y(k) y
f(k)','fontsize',13);
xlabel('k'); grid on;
26

%% PARTE B)
%Como la seal f son tres impulsos consecutivos, por linealidad la
%propiedad de convolucion con impulso h(k)= y(k)+y(k-1)+y(k-2):
h2(1)= y(1);
h2(2)= y(2)+y(1);
for k=3:length(y)-1
h2(k+1)= y(k+1) + y(k) + y(k-1);
end
k=0:length(h2)-1;

figure(2)
stem(k,h2); title('Convolucion de y(k) y f(k)','fontsize',13);
xlabel('k'); grid on;

%% PARTE C)
g=[0,0,2,2,2];
%Calculando convolucion:
j= conv(g,y);

figure(3)
k=0:length(y)-1;
subplot(3,1,1); stem(k,y,'b'); title('Seal y(k)','fontsize',13);
xlabel('k'); grid on;

k=0:length(g)-1;
subplot(3,1,2); stem(k,g,'r'); title('Seal g(k)','fontsize',13);
xlabel('k'); grid on;

k=0:length(j)-1;
subplot(3,1,3); stem(k,j,'g'); title('Convolucion entre g(k) e
y(k)','fontsize',13);
xlabel('k'); grid on;

%% PARTE D)
%Utiliziando las propiedades de convolucion, para calcular la convolucion
%solo se necesita calcular j2=h*2delt(t-2):
delt=[0,0,2];
j2=conv(h,delt);

figure(4)
k=0:length(j2)-1;
stem(k,j2); title('Convolucion de y(k) y g(k)','fontsize',13);
xlabel('k'); grid on;

%% PARTE E)
%Para demostrar que son iguales, se calcular el error y se graficar, para
%los resultados obtenidos en c) y d):
27

e=j-j2;

figure(5)
k=0:length(e)-1;
stem(k,e); title('Error entre y(k)*g(k)','fontsize',13);
xlabel('k'); grid on;

Ejercicio 3:

%% Ejercicio 3: Media Mvil y Submuestreo

%% A) Primera parte
clear all, clc, close all
%Segn la primera Formula: X_ang(k)=(1/L)*sum(x(i)) de i=k-L+1 hasta k.

%Valores iniciales por contener argumentos negativos


x_avg(1)=5/3;
x_avg(2)=11/3;

x=[5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];

for i=3:30
x_avg(i)=(1/3)*(x(i-2)+x(i-1)+x(i));
end

for i=1:30
k(i)=i-1; %Eje X
end

%Grafico media movil

stem(k,x_avg,'filled','b','linewidth',2)
grid on
title('Grafico Media Movil','fontsize',15);
xlabel('Tiempo discreto k','fontsize',12);
ylabel('Magnitud Seales Impulsos','fontsize',12);
%% Segunda Parte
%Segn la segunda Formula: X_avg(k)=X_avg(k-1)+((x(k)-x(k-L))/L

x1_avg(1)=5/3;
x1_avg(2)=11/3;
x1_avg(3)=13/3;

for i=4:30
x1_avg(i)=x1_avg(i-1)+((x(i)-x(i-3)))/3;
end

%Grafico media movil

stem(k,x1_avg,'filled','r','linewidth',2)
grid on
title('Grafico Media Movil','fontsize',15);
xlabel('Tiempo discreto kT','fontsize',12);
28

ylabel('Magnitud Seales Impulsos','fontsize',12);

%% Tercera parte: Comparacin Graficas Media Movil

subplot(2,1,1);stem(k,x_avg,'filled','b','linewidth',2)
grid on
title('Grafico Media Movil','fontsize',15);
xlabel('Tiempo discreto kT','fontsize',12);
ylabel('Magnitud Seal Impulsos','fontsize',12);
legend('Ec. (3.1)')
subplot(2,1,2);stem(k,x1_avg,'filled','r','linewidth',2)
grid on
title('Grafico Media Movil','fontsize',15);
xlabel('Tiempo discreto kT','fontsize',12);
ylabel('Magnitud Seal Impulsos','fontsize',12);
legend('Ec. (3.2)')

%% Ejercicio 3: Media Mvil y Submuestreo

%% B)
clear all, clc, close all

%Para calcular la media movil a traves de la convolucin se debe crear una


secuencia de 3 impulsos unitarios normalizado:

aux=(1/3)*[1 1 1] %normalizado
x=[5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];
c=conv(aux,x);
for i=1:32
k(i)=i-1; %Eje X
end
for i=1:30
x1(i)=i-1; %Eje X
end

hold on
stem(x1,x,'filled','b','linewidth',2)
grid on
title('Grafico Media Movil','fontsize',15);
xlabel('Tiempo discreto kT','fontsize',12);
ylabel('Magnitud Seales Impulsos','fontsize',12);
xlim([-1 31])
ylim([0 13])
plot(k,c,'m','linewidth',2)
legend('Secuencia y(k)','Media Movil Conv')
hold off

%% Ejercicio 3: Media Mvil y Submuestreo

%% C):

x=[5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];
29

Subm1=downsample(x,2); % Submuestreo con comando "downsample" tomando una


muestra sobre 2
Subm2=decimate(x,2); % Submuestreo con comando "decimate" tomando una muestra
sobre 2
x1=1:1:30; % Eje X para Secuencia y{k}
x2=1:2:30; % Eje X para Graficos de Submuestreo

hold on
plot(x1,x,'b','linewidth',2)
plot(x2,Subm1,'r','linewidth',2)
plot(x2,Subm2,'g','linewidth',2)
stem(x1,x,'b','filled','linewidth',1)
stem(x2,Subm1,'r','filled','linewidth',1)
stem(x2,Subm2,'g','filled','linewidth',1)
grid on
title('Comparacin Graficos','fontsize',15)
xlabel('Tiempo Discreto KT','fontsize',12)
ylabel('Meagnitudes','fontsize',12)
legend('Secuencia y(k)','Downsample','Decimate')
hold off

%% Ejercicio 3: Media Mvil y Submuestreo

%% D)

%Segn la primera Formula: X_ang(k)=(1/L)*sum(x(i)) de i=k-L+1 hasta k.

%Valores iniciales por contener argumentos negativos


x_avg(1)=5/3;
x_avg(2)=11/3;

x=[5,6,2,7,9,10,12,3,5,1,2,3,8,5,3,1,5,8,5,3,4,7,8,4,2,1,3,8,4,2];

for i=3:30
x_avg(i)=(1/3)*(x(i-2)+x(i-1)+x(i)); % Vector Media Movil Parte A)
end

y1=decimate(x,2); % Vector Submuestreo con Decimate Parte C)

k=1:2:30; % Eje X
k1=1:1:30;

y=downsample(x_avg,2); %Submuestreo de la seal filtrada con Media Movil


obtenida en la parte A)

hold on
stem(k,y,'b','filled','linewidth',2)
grid on
stem(k,y1,'m','filled','linewidth',2)
stem(k1,x_avg,'g','linewidth',1)
legend('Seal Downsample M. Mvil A)','Seal y(k) Decimate C)','Seal Original
M. Mvil A)')
title('Grfico Comparador','fontsize',15)
xlabel('Tiempo Discreto KT','fontsize',12)
ylabel('Magnitud de Seales','fontsize',12)
xlim([0 31])
30

ylim([0 13])
hold off
Ejercicio 4:

%%EJERCICIO 4: FILTRADO DE IMAGENES

%% PARTE A)
clear all
close all
clc
%Leyendo imagen:
im=imread('lizard.png');
im_double=double(im);

%Creando mascaras para filtros media y gaussianos:


av_25x25= ones(25)/(25^2);
av_50x50= ones(50)/(50^2);
av_100x100= ones(100)/(100^2);

gauss_25x25= gauss_2D(25,3);
gauss_50x50= gauss_2D(50,3);
gauss_100x100= gauss_2D(100,3);

%Aplicando filtro media:


for i=1:3
im_fm1(:,:,i)= conv2(av_25x25,im_double(:,:,i));
im_fm2(:,:,i)= conv2(av_50x50,im_double(:,:,i));
im_fm3(:,:,i)= conv2(av_100x100,im_double(:,:,i));
end

%Aplicando filtro gaussiano:


for i=1:3
im_fg1(:,:,i)= conv2(gauss_25x25,im_double(:,:,i));
im_fg2(:,:,i)= conv2(gauss_50x50,im_double(:,:,i));
im_fg3(:,:,i)= conv2(gauss_100x100,im_double(:,:,i));
end

%Graficando bandas (fig1) e imagen compuesta (fig2) para distintos filtros


media:
figure(1)
subplot(3,3,1),imshow(uint8(im_fm1(:,:,1)));title('Banda R: filtro media
25x25','fontsize',13);
subplot(3,3,2),imshow(uint8(im_fm1(:,:,2)));title('Banda G: filtro media
25x25','fontsize',13);
subplot(3,3,3),imshow(uint8(im_fm1(:,:,3)));title('Banda B: filtro media
25x25','fontsize',13);

subplot(3,3,4),imshow(uint8(im_fm2(:,:,1)));title('Banda R: filtro media


50x50','fontsize',13);
subplot(3,3,5),imshow(uint8(im_fm2(:,:,2)));title('Banda G: filtro media
50x50','fontsize',13);
subplot(3,3,6),imshow(uint8(im_fm2(:,:,3)));title('Banda B: filtro media
50x50','fontsize',13);
31

subplot(3,3,7),imshow(uint8(im_fm3(:,:,1)));title('Banda R: filtro media


100x100','fontsize',13);
subplot(3,3,8),imshow(uint8(im_fm3(:,:,2)));title('Banda G: filtro media
100x100','fontsize',13);
subplot(3,3,9),imshow(uint8(im_fm3(:,:,3)));title('Banda B: filtro media
100x100','fontsize',13);

figure(2)
subplot(2,2,1),imshow(uint8(im_double));title('Imagen original');
subplot(2,2,2),imshow(uint8(im_fm1));title('Imagen filtro media
25x25','fontsize',13);
subplot(2,2,3),imshow(uint8(im_fm2));title('Imagen filtro media
50x50','fontsize',13);
subplot(2,2,4),imshow(uint8(im_fm3));title('Imagen filtro media
100x100','fontsize',13);

%Graficando bandas (fig3) e imagen compuesta (fig4) para distintos filtros


gaussianos:
figure(3)
subplot(3,3,1),imshow(uint8(im_fg1(:,:,1)));title('Banda R: filtro gauss
25x25','fontsize',13);
subplot(3,3,2),imshow(uint8(im_fg1(:,:,2)));title('Banda G: filtro gauss
25x25','fontsize',13);
subplot(3,3,3),imshow(uint8(im_fg1(:,:,3)));title('Banda B: filtro gauss
25x25','fontsize',13);

subplot(3,3,4),imshow(uint8(im_fg2(:,:,1)));title('Banda R: filtro gauss


50x50','fontsize',13);
subplot(3,3,5),imshow(uint8(im_fg2(:,:,2)));title('Banda G: filtro gauss
50x50','fontsize',13);
subplot(3,3,6),imshow(uint8(im_fg2(:,:,3)));title('Banda B: filtro gauss
50x50','fontsize',13);

subplot(3,3,7),imshow(uint8(im_fg3(:,:,1)));title('Banda R: filtro gauss


100x100','fontsize',13);
subplot(3,3,8),imshow(uint8(im_fg3(:,:,2)));title('Banda G: filtro gauss
100x100','fontsize',13);
subplot(3,3,9),imshow(uint8(im_fg3(:,:,3)));title('Banda B: filtro gauss
100x100','fontsize',13);

figure(4)
subplot(2,2,1),imshow(uint8(im_double));title('Imagen original');
subplot(2,2,2),imshow(uint8(im_fg1));title('Imagen filtro gauss
25x25','fontsize',13);
subplot(2,2,3),imshow(uint8(im_fg2));title('Imagen filtro gauss
50x50','fontsize',13);
subplot(2,2,4),imshow(uint8(im_fg3));title('Imagen filtro gauss
100x100','fontsize',13);

%% PARTE B)
%Convirtiendo imagen a escala de grises:
im=imread('lizard.png');
im_gris= rgb2gray(im);

%Convirtiendo a double, para aplicar filtros:


im_gris_double= double(im_gris);
32

%Aplicando filtros media 25x25 y gaussiano 25x25 desv=3 que son los con
%mejores resultados:
av_25x25= ones(25)/(25^2);
gauss_25x25= gauss_2D(25,3);

img_fm= conv2(im_gris_double,av_25x25);
img_fg= conv2(im_gris_double,gauss_25x25);

figure (5)
subplot(1,3,1),imshow(im_gris); title('Imagen original');
subplot(1,3,2),imshow(uint8(img_fm)); title('Filtro media 25x25');
subplot(1,3,3),imshow(uint8(img_fm)); title('Filtro gaussiano 25x25 desviacin
est.= 3');

figure(6)
subplot(1,3,1),imhist(uint8(im_gris)); title('Histograma imagen gris original');
subplot(1,3,2),imhist(uint8(img_fm)); title('Histograma filtro media 25x25');
subplot(1,3,3),imhist(uint8(img_fg)); title('Histograma filtro gaussiano 25x25
desviacin est.= 3');

Вам также может понравиться