Você está na página 1de 104

Ruido y Filtrado

Clase de Taller I del 28/10/2015


ndice
RUIDO
Qu es el ruido?
Objetivos.
Tipos de ruido.

TECNICAS DE FILTRADO EN DOMINIO ESPACIAL


Promediado de imgenes
Filtros de orden
Filtros de medias

DOMINIO FRECUENCIAL

FUNCIONES EN MATLAB
Problema.

Las imgenes se adquieren por mtodos foto electrnicos o


fotoqumicos. Los dispositivos sensores tienden a degradar la
calidad de las imgenes al introducir ruido, deformaciones
geomtricas y/o borrosas debido al movimiento o desenfoque del
dispositivo con el que se obtiene la imagen (cmara).
Una de las preocupaciones primarias del procesamiento digital de
imgenes es aumentar la calidad de la imagen y moderar la
degradacin introducida por los sensores y dispositivos de
adquisicin.
Las tcnicas de restauracin de imgenes estn interesadas
primariamente por reconstruir o recobrar una imagen que ha sido
degradada.
Qu es el ruido?
Repasemos: Imagen digital

Objeto Real: Representacin


continuo Interna: Pixel
dicreta
Concepto de ruido (I)

Cuando obtenemos una imagen digital y se


ve un poco distorsionada, decimos que la
imagen tiene ruido.
ruido
Segn su definicin, ruido es cualquier
perturbacin que sufre una seal en el
proceso de adquisicin y/o transmisin y/o
almacenamiento.
El ruido se modela usualmente como un
proceso estocstico (modelo probabilstico).
Concepto de ruido (II)

El ruido es un defecto de la informacin no deseado


que contamina/degrada la imagen.
Se manifestar generalmente en pxeles aislados
que toman valores distintos de los reales.
Imagen real Degradacin Imagen distorsionada
+
f(x,y) g(x,y)
D

n(x,y)
Imgenes ruidosas
Escner de la letra G con y sin rudo

>>[R,Q] = size(G); % matriz 5x7

>>G_ruidosa = G + randn(R,Q)*0.2

G=01110100011000010000100111000101110

G_ruidosa = 0.1337 0.9859 1.0447 1.0773 -0.5392 1.0712 0.0547 0.0860


-0.0817 0.9028 0.6783 0.0299 0.3474 -0.0147 0.1335 1.2666 0.0991
0.3885 -0.2928 0.1002 1.0181 -0.0948 0.0390 0.8881 0.9455 0.8147
0.0208 0.4779 0.1484 1.2493 -0.2367 0.9407 1.0204 1.0842 -0.2981
Objetivos:
procesamiento de ruido
Suavizar la imagen:
imagen reducir las variaciones de
intensidad entre pxeles vecinos.
Eliminar ruido:
ruido modificar aquellos pxeles cuyo nivel
de intensidad es muy diferente del de sus vecinos.
Realzar la imagen:
imagen aumentar las variaciones de
intensidad, all donde se producen.
Detectar bordes:
bordes detectar aquellos pxeles donde se
produce un cambio brusco en la funcin intensidad.
Tipos de ruidos
Aditivo: El ms usual es el gaussiano, que es esencialmente
aditivo y la seal independiente, g(z,y) = f(z,y) + n(z,y) donde
g(z,y) es el resultado de la distorsin de imagen original f(z,y)
por el ruido gaussiano aditivo n(z,y)
Impulsivo: Frecuentemente los sensores generan ruido
impulsivo. Algunas veces el ruido generado por transmisin
digital (o incluso analgico) es impulsivo. Puede ser
modelado como: g(x,y)=(1-p)*f(x,y)+p*i(x,y) donde i(z, y) es el
ruido impulsivo y p pertenece a {0,1}.
Multiplicativo: el ruido de aspecto granulado de las
imgenes de radares y ecografas. Es esencialmente
multiplicativo. Tiene un aspecto moteado. g (z, y) = f (z, y) *
m(x, y), donde m(z, y) es el ruido multiplicativo.
Comando Matlab:
J = IMNOISE(I,TYPE,...) Adisiona de los siguiente tipos:

'gaussian' Ruido Gausiano blanco con media y varianza


cosntante.

'localvar' Ruido Gausiano Blanco con media cer y


varianza.

'poisson' Ruido con distribucin Poisson.

'salt & pepper' Cambia los pixeles a blanco o negro.

'speckle' Ruido Multiplicativo.


Ruido Gaussiano (I)
El valor final del pxel es el real ms una cierta cantidad de
error.
Puede describirse como una variable gaussiana que sigue
una distribucin normal.
P(g(x,y)- < f(x,y) < g(x,y)+) = 70%
P(g(x,y)-2 < f(x,y) < g(x,y)+2 ) = 90%
Ruido Gaussiano (II)

Produce pequeas variaciones en la imagen.


Suele ser debido a los componentes
electrnicos (sensores, digitalizadores...)
Espectro de energa constante para todas las
frecuencias:
Afecta a la imagen completa.
La intensidad de todos los pxeles se ve
alterada.
Ruido Gaussiano (III)

Por ejemplo se suele asumir que en funcin del ruido


Gaussiano el valor de la media es cero m() y con un
valor 0,01 de varianza.
Se define ruido blanco como un proceso estocstico que
presenta media nula, varianza constante y covarianza
nula y si adems la distribucin es normal, se denomina
Ruido Blanco Gaussiano.
Los comandos que se usan para invocar a la funcin son:

J= imnoise(I,gaussian, m, v)
Ruido Gaussiano (IV)

Ejemplo:

original v=0,01 v=0,1


Ruido Gaussiano (V)

Influencia del ruido gausiano segn la varianza:


Ruido Impulsionar:
Sal y Pimienta (I)
El valor que toma el pxel no tiene relacin con el valor
real sino que toma valores muy altos o muy bajos
Toma el valor mximo (sal) o el mnimo (pimienta).
En Matlab el comando es:
J= imnoise(I, salt & pepper,d)
Aade el ruido a la imagen I donde d es la densidad del
ruido.
Se afecta aproximadamente a los d*num(I) pixeles.
El valor de d por defecto es 0,05.
Ruido Impulsionar:
Sal y Pimienta (I)
Ejemplos con d=0.1 y d=0.3:
Ruido Impulsionar:
Sal y Pimienta (II)
Ejemplo:
Ruido Multiplicativo (I)

La seal obtenida es fruto de la multiplicacin de dos


seales.
Se aade el ruido a la multiplicacin de la imagen por
medio de la siguiente ecuacin:
J=n*I
Donde n es de distribucin uniforme de ruido aleatorio
con media 0 y con varianza v. El valor predeterminado
en Matlab es de v = 0,04.
La sintaxis para invocar a la funcin es:
J= imnoise(I, speckle,v)
Ruido Uniforme (II)

Ejemplo multiplicativo:
Mejoramiento de la imagen:

Con el objetivo de mejorar la imagen a travs


de reducir o eliminar el ruido se suelen
aplicar filtros.
filtros
La idea es aproximar el valor original del
pixel usando informacin de la propia imagen
o externa.
Hay muchos tipos diferentes de filtros.
Tipos de Filtros:
Dominio Espacial
Filtros de orden o Filtros de medias:
Mediana Lineales
Media (paso bajo espacial)
Moda Media geomtrica
Mximos y mnimos Media armnica
Media contra-armnico
De Gauss
o Promediado de imgenes No lineales
Outlier

Dominio Frecuencial
Paso bajo Paso banda
Paso alto Rechazo banda
Filtros del Domino Espacial
Estos filtros consisten en modificar o mejorar
un pixel elegido en funcin de los valores de
un entorno o subconjunto de pixeles vecinos
a aquel.
Vecindades
Operaciones sobre vecindades:
Son aquellas que se realizan sobre bloques definidos
dentro de la imagen, en vez de procesar toda la imagen
Operaciones basadas
en vecindades (I)
Las operaciones se realizan de la siguiente forma:

1.- Se selecciona el pxel a procesar.


2.- Se selecciona el entorno del pxel.
3.- Se aplica una funcin que depende del valor
de los pxeles del entorno seleccionado.
4.- Se pone en la imagen de salida en la posicin del
pxel seleccionado de la imagen de entrada, el
valor devuelto por la funcin.
5.- Repetir de 1 a 4 por cada pxel de la imagen de
entrada.
Operaciones basadas
en vecindades (II)
Solucin: Relleno de pxeles
Imagen de salida
Imagen de entrada 1 2 3
1 ...
1 2 3 4 5
1 n ... 2 ...
1 2 3 4 5
2 ... 3 1 n ...
3 ... 2 ...
.
. 3 ...
. .
m ...
. .
m ...

Rellenar contorno sin alterar la imagen original:


mscara=
Funcin: imfilter (La_imagen.jpg, mscara, relleno, salida) [0 0 0 0 0
00000
same: Mismo tamao imagen original 00100
full: Tamao resultante con relleno (mayor) 00000
0 0 0 0 0]
Operaciones basadas
en vecindades (III)
Relleno de una constante

f=
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
w=
[0 0 0 0 0
00000
00100
00000 >> imfilter(f,w,25,'full')
0 0 0 0 0]
Operaciones basadas
en vecindades (IV)
Relleno basado en rplica

f=
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
w=
[0 0 0 0 0
00000
00100
00000 >> imfilter(f,w,replicate' ,'full')
0 0 0 0 0]
Operaciones basadas
en vecindades (V)
Relleno basado en espejo

f=
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
w=
[0 0 0 0 0
00000
00100
00000 >> imfilter(f,w, symmetric ,'full')
0 0 0 0 0]
Operaciones basadas
en vecindades (VI)
Tamao imagen destino

f=
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1
-1 -2 -3 -2 -1
1 2 3 2 1 >> imfilter(f,w,0, full')
w=
[0 0 0 0 0
00000
00100
00000
0 0 0 0 0]
>> imfilter(f,w,0, same')
Filtros de orden:
Metodologa:
Definir tamao de submatriz para actuar.
Ordenar los elementos que engloban la submatriz.
Aplicar el criterio correspondiente dependiendo del filtro.

Tipos de ventanas:
Preserva bordes Preserva bordes
Vert. y horizont. oblicuos
Filtros de orden:
Debe fijarse un tamao de vecindad.
Puede ser rectangular o de cualquier otra forma, generalmente
cuadrado y nmero de elementos impar.
Debe definirse la posicin del pixel de estudio respecto a la
ventana, generalmente y por simetra el central.
En una convolucin las propiedades del filtro vienen dadas por los
coeficientes de la mscara.

Hay problemas de borde o contorno.


Duplicacin peridica.
Duplicacin del borde.
Puesta a cero del contorno.
Suprimir borde
Filtrado de la mediana (I)

Sustituye el valor del pxel estudiado, por la mediana de


los valores que engloba una ventana de seleccin dada.
Ventajas
Atena el ruido impulsionar (Sal y pimienta).
Elimina efectos engaosos.
Preserva bordes de la imagen.
Inconvenientes
Pierde detalles (Puntos, lneas finas).
Redondea las esquinas de los objetos.
Desplazamiento de los bordes.
Filtrado de la mediana (II)

menor mayor
Operaciones basadas
en vecindades (I)
Ejemplo: Mediana de una vecindad de 3x3
Imagen de entrada (I) Imagen de salida (I1)
0 10 10 6 3 0
6 14 10 10 4 3
11 14 15 10 5 3
11 16 17 20 6 3
11 15 16 6 4 2
11 20 15 10 5 4
11 13 10 5 3 2
13 16 6 2 2 2
11 16 7 3 4 2 6 7 4 3 2 2
6 4 4 2 3 2 0 4 3 3 2 0

Lo cual se realizara con el siguiente programa Matlab


>> I1=medfilt2(I,[N M]); % Default 3x3
Filtrado de la mediana (III)
FILTRO DE LA MEDIANA PONDERADA:
A menudo se ponderan mas ciertos valores de nivel
de gris que otros y eso se ve reflejado en unas
mscaras de ponderacin.
Por ejemplo, se le puede dar ms importancia a los
pxeles centrales que al resto de la ventana.
Una mscara de ponderacin muy comn es :

1 2 1
2 4 2
1 2 1
Filtrado de la mediana (IV)

3 35 12 1 2 1 3 70 12
X 2 4 2 = 12 100 45
6 25 45
15 17 22 1 2 1 15 34 22

3 12 12 15 22 34 45 70 100
Filtrado de la moda

Sustituye el pxel estudiado por el valor ms


repetido que contiene la ventana de seleccin.
Ventaja
Atena el ruido impulsional (Sal y pimienta).
Inconveniente
Con frecuencia los valores de intensidad en
la vecindad son todos diferentes.
Mximos y mnimos (I)

Mximo: selecciona el mayor valor dentro de una


ventana ordenada de valores de nivel de gris.
Ventaja
Elimina el ruido pimienta (pxeles negros).
Inconvenientes
Slo funciona cuando el ruido es tipo pimienta.
Tiende a aclarar la imagen.
Operaciones basadas
en vecindades (II)
Ejemplo: Mximo de una vecindad de 3x3
Imagen de entrada (I) Imagen de salida (I1)
16 17 20 20 20 6
6 14 10 10 4 3
20 20 20 20 20 6
11 16 17 20 6 3
20 20 20 20 20 6
11 20 15 10 5 4
20 20 20 15 10 5
13 16 6 2 2 2
11 16 7 3 4 2 16 16 16 7 4 4
6 4 4 2 3 2 16 16 16 7 4 4

Lo cual se realizara con el siguiente programa Matlab


>> f=inline('max(x(:))'); % Define funcin mxima
>> I1=nlfilter(I,[3, 3],f); % Devuelve mximo
Mximos y mnimos (II)

Mnimo: Selecciona el menor valor de dentro de


una ventana ordenada de valores de pxeles.
Ventaja
Elimina el ruido sal (pxeles blancos).
Inconvenientes
Slo funciona cuando el ruido es tipo sal.
Tiende a oscurecer la imagen.
Operaciones basadas
en vecindades (III)
Ejemplo: Mnimo de una vecindad de 3x3
Imagen de entrada (I) Imagen de salida (I1)

6 14 10 10 4 3 0 0 0 0 0 0
11 16 17 20 6 3 0 6 10 4 3 0
11 20 15 10 5 4 0 6 2 2 2 0
13 16 6 2 2 2 0 6 2 2 2 0
11 16 7 3 4 2 0 4 2 2 2 0
6 4 4 2 3 2 0 0 0 0 0 0

Lo cual se realizara con el siguiente programa Matlab


>> f=inline('min(x(:))');
>> I1=nlfilter(I,[3, 3],f);
Mximos y mnimos (III)
Filtros de media Lineales (I)
Filtros de media Lineales (II)
Filtros de media Lineales (III)
Filtro media lineal
Obtiene el valor promedio de los
pixeles. Tambin se denomina
filtro de media.

Su efecto es el difuminado o 1 1 1
suavizado de la imagen y se
aplica junto con el de mediana 1/9 * 1 1 1
para eliminar ruidos.
1 1 1
Este filtro se puede implementar
con la siguiente mscara(kernel)
para un tamao 3x3:

Esta configuracin recibe el nombre de media aritmtica


Filtro media aritmtica
Ej. Filtro media aritmtica
Filtros de media Lineales (V)

Paso bajo espaciales


Se puede dar distintos pesos a los valores de los
pxeles
Mayor peso al central. Mscara:

1 1 1
1/9 * 1 2 1
1 1 1
Filtros de media Lineales (V)

Paso bajo espaciales


Mayor peso al pxel central que a sus vecinos, y a
los vecinos de tipo cuatro que a los de tipo 8.
Mscara:

1 b 1
1/9 *
b b2 b
1 b 1

Este filtro no logra eliminar el ruido impulsionar


Generacin de Filtros en Matlab
h = fspecial(type)
h = fspecial(type, parameters)

Crea un filtro bidimensional h del tipo especificado.


Devuelve como un kernel de correlacin, que es la forma adecuada para
usar con imfilter.
Filtros espaciales

Responden a la siguiente ecuacin:


a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b
donde:
f(x+s, y+t): Valor de los pxeles del bloque seleccionado
w(s, t): Coeficientes que se aplicarn al bloque (mscara)

Siendo la matriz del bloque:


m(filas) = 2a + 1
n(columnas) = 2b + 1
Filtros espaciales (II)
Concepto:
Son las operaciones que se realizan
directamente sobre los pxeles. Se define
una matriz de coeficientes del filtro (o
mscara, de tamao mxn) los cuales
constituirn pesos ponderados por los que se
multiplicarn los valores originales de los
pxeles.
Filtros espaciales (III)
Valores de los pxeles del bloque

f(x-1, y-1) f(x-1, y) f(x-1, y+1)


f(x, y-1) f(x, y) f(x, y+1)
f(x+1, y-1) f(x+1, y) f(x+1, y+1)
Valores de los pxeles de los coeficientes (mscara)
w(-1, -1) w(-1, 0) w(-1, 1)
w(0, -1) w(0, 0) w(0, 1)
w(1, -1) w(1, 0) w(1, 1)

a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b
Filtros espaciales (IV)

Ejemplo:
Valor de los pxeles
17 24 1 8 15
Mscara (o filtro)
23 5 7 14 16 8 1 6
4 6 13 20 22 3 5 7
10 12 19 21 3 4 9 2
11 18 25 2 9

a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b

g(2,4)=1(8)+8(1)+15(6)+7(3)+14(5)+16(7)+13(4)+20(9)+22(2)=585
Filtros espaciales (V)

Pasos para la aplicacin del filtro lineal:


1.- Definir la mscara
2.- Definir tipo de relleno
3.- Aplicar la ecuacin:
a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b

4.- Definir tamao de la imagen de salida


Filtros espaciales (VI)
Ejemplos de filtros

Filtro promedio:

Filtro promedio ponderado:


Filtros espaciales (VII)
Ejemplo (usando Matlab):
% Imagen original
>> I=imread('tire.tif');

% Se define una matriz de pesos de valores iguales,


% a lo que se le denomina filtro promedio
>> w=ones(5,5)/25;

% Se aplica el filtro Original Resultado


>> I2=imfilter(I,w); >> I(1:5,1:5) >> I2(1:5,1:5)
ans = ans =
6 14 10 10 4 5 6 7 6 5
11 16 17 20 6 6 8 9 7 5
11 20 15 10 5 8 9 10 9 6
13 16 6 2 2 7 8 9 8 5
11 16 7 3 4 6 6 7 6 4
Filtro promedio

Es muy efectivo en remover ruido blanco


aditivo Gaussiano. Sin embargo, tiende a hacer
borrosos los bordes y los detalles de la imagen
(por ejemplo lneas) y degrada la calidad de la
imagen.
Filtros espaciales (VIII)

Original Con ruido


Filtros espaciales (IX)
Original
>> imhist(I) >> imhist(I2)

900
800
800
700
700
600
600
500
500

400
400

300 300

200 200

100 100

0 0

0 50 100 150 200 250 0 50 100 150 200 250


Filtros espaciales (X)
Formas de aplicar la mscara
Mtodo de correlacin: Se aplica la mscara tal y como se define.

Mtodo de convolucin: Se rota la mscara 180 grados alrededor


del pxel central, antes de aplicar el filtro.

Imagen
f= Mscara
00000 w=
00000 123
00100 456
00000 789
00000

>> imfilter(f,w,'corr') >> imfilter(f,w,'conv')


Filtro Laplaciano

Este tipo de filtro se basa en un operador


derivativo, por lo que acenta las zonas que
tienen gran discontinuidad en la imagen

f ( x)
f ( x 1) f ( x)
x
Filtro Laplaciano (II)
f ( x)
Si se cumple: f ( x 1) f ( x)
x

2 f ( x)
Entonces: f ( x 1) f ( x 1) 2 f ( x)
x 2

Si la funcin depende de dos variables

2
f ( x , y ) 2
f ( x, y )
f ( x, y )
2

x 2
y 2
Filtro Laplaciano (III)
Funcin dependiente de dos variables
2
f ( x , y ) 2
f ( x, y )
f ( x, y )
2

x 2
y 2
La derivada de segundo orden con respecto a al variable x:
2 f ( x, y )
f ( x 1, y ) f ( x 1, y ) 2 f ( x, y )
x 2

De forma similar, con respecto a y:

2 f ( x, y )
f ( x, y 1) f ( x, y 1) 2 f ( x, y )
y 2

Finalmente:
2 f ( x, y ) f ( x 1, y ) f ( x 1, y ) 2 f ( x, y ) f ( x, y 1) f ( x, y 1) 2 f ( x, y )
Filtro Laplaciano (IV)
El Laplaciano queda definido por:
2 f ( x, y ) f ( x 1, y ) f ( x 1, y ) f ( x, y 1) f ( x, y 1) 4 f ( x, y )

La anterior expresin es equivalente a aplicar una


mscara definida por:

w=
0 1 0 a b
1 -4 1 g ( x, y) w ( s, t ) f ( x s, y t )
s at b
0 1 0
Filtro Laplaciano (V)

% Imagen original
>> I=imread('moon.jpg' );
% Se define una matriz de pesos
>> w=[0, 1, 0; 1, -4, 1; 0, 1, 0];
% Se aplica el filtro
>> I2=imfilter(I,w);

Alternativa:
>> I=imread('moon.jpg ');
>> w=fspecial('laplacian',0);
>> I2=imfilter(I,w,'replicate');
Filtro Laplaciano (VI)

Imgenes: www.imageprecessingplace.com
Filtro Laplaciano (VII)
2 f ( x, y ) f ( x 1, y ) f ( x 1, y ) f ( x, y 1) f ( x, y 1) 4 f ( x, y )

Si se desea considerar las variaciones con respecto a la diagonal

w= w=
0 1 0
1 -4 1 1 1 1
0 1 0 1 -8 1
-4 1 1 1
+1 Tambin se utiliza el negado de las anteriores mscaras

w= w=
-1 -1 -1 0 -1 0
-1 8 -1 -1 4 -1
-1 -1 -1 0 -1 0
Filtros Laplacianos
alternativos
Se emplea en pocas ocasiones en la prctica

Excesivamente sensible a la presencia de ruido


Da lugar a bordes dobles y no permite determinar
direcciones

Se utiliza para realzar una imagen

Sumar o restar el Laplaciano de la imagen dependiendo


del signo del coeficiente central de la mscara utilizada

Coeficiente central de la mscara negativo


Coeficiente central de la mscara positivo
Filtros Laplacianos
alternativos (II)
Resultado de sustraer el Laplaciano
(una nica mscara)

Incluye
diagonal
MatLab: Resumen
Introduccin de ruido:
Gaussiano:
Gaussiano
Ruidosa = imnoise(imagen,gaussian,media,varianza)

Por defecto: media=0 varianza=0.01


Ruidosa = imnoise(imagen, 'localvar',varianza)

Por defecto: media=0 varianza=0.01


Permite definir la varianza de cada pxel por separado
Impulsional:
Impulsional
Ruidosa = imnoise(imagen, 'salt & pepper' ,media,varianza)

Multiplicativo:
Multiplicativo
Ruidosa = imnoise(imagen, 'speckle',media,varianza)
Matlab
Filtrado:
Mediana:
Filtrada = medfilt2(Imagen,[tamao de ventana])
Por defecto: ventana = 3 x 3
Mximo:
Filtrada = ordfilt2 (Imagen,9,ones(tamao de ventana))
Mnimo:
Filtrada = ordfilt2 (Imagen,1,ones(tamao de ventana))
Media aritmtica:
Filtrada = imfilter (Imagen,fspecial(average,[tamao de ventana]))
Por defecto: ventana = 3 x 3
Gaussiano:
Filtrada = imfilter (Imagen,fspecial(gaussian,[tamao de ventana],varianza))
Por defecto: ventana = 3 x 3
Generacin de Filtros en Matlab
h = fspecial(type)
h = fspecial(type, parameters)

Crea un filtro bidimensional h del tipo especificado.


Devuelve como un kernel de correlacin, que es la forma adecuada para
usar con imfilter.
Filtro Gaussiano (I)
La mscara o filtro que responde a:
( x 2 y 2 ) / 4 2
e
w( x, y ) a b

e
s a s b
( s 2 t 2 ) / 4 2

Siendo la matriz del bloque:


m(filas) = 2a + 1
n(columnas) = 2b + 1

Filtro Gaussiano (II)

Influencia del parmetro


Filtro Gaussiano (III)
Mscara a partir de funcin no lineal
Filtro que se aplica es lineal
0.25
%Define mscara
>> fspecial('gaussian',3,0.5)
0.2
ans =
0.0113 0.0838 0.0113
0.15
0.0838 0.6193 0.0838
0.0113 0.0838 0.0113
0.1

0.05
% Mscara y filtro
>> w=fspecial(gaussian',3,0.5);
0
-3 -2 -1 0 1 2 3 >> I2=imfilter(I,w,'replicate');

0.0478 0.1163 0.0478 a b


0.1163
0.0478
0.2829
0.1163
0.1163
0.0478
g ( x, y) w ( s, t ) f ( x s, y t )
s at b
Laplaciana de la gausiana
Laplaciana de la gausiana (II)
>> w=fspecial('log',5,0.4)
ans =
0.2475 0.2475 0.2479 0.2475 0.2475
0.2475 0.3545 1.2336 0.3545 0.2475
0.2479 1.2336 -10.31 1.2336 0.2479
0.2475 0.3545 1.2336 0.3545 0.2475
0.2475 0.2475 0.2479 0.2475 0.2475
>>surf(w) >>surf(-w)
5 15

0 10

-5 5

-10 0

-15 -5
5 5
4 5 4 5
3 4 3 4
3 3
2 2 2 2
t 1 1 t 1 1
s s
Laplaciana de la gausiana (III)
Mejorando detalles del tipo de filtros
>> w=fspecial('log',5,0.4)
>> [x, y]=meshgrid(-2:1:2)
>> [xi, yi]=meshgrid(-2:.05:2);
>> zi = interp2(x,y,z,xi,yi);
>> surf(xi,yi,zi)

-5

-10

-15
5
4 5
3 4
3
2 2
t 1 1
s
Mscaras con fspecial
Disco

>> w = fspecial('disk',4)

Promedio

>> w = fspecial('average',5)
w=
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
>> 1/25
ans =
0.0400
Ejemplo: Promedio
>> w=fspecial('average');
Imagen Original Resultado del Filtro
Mscaras con fspecial (II)
Gausiana Laplaciana de la gausiana
>>z = fspecial('gaussian',5,0.7) >> z = fspecial('log',5,0.7)
Ejemplo: Filtro Gaussiano

>> w=fspecial('gaussian');

Imagen Original Resultado del Filtro


Mscaras con fspecial (III)
Laplaciana Mejora de contraste
>>z = z = fspecial('laplacian',0.3) >> z = fspecial('unsharp',0.3)

>> fspecial('laplacian',0) >> fspecial('unsharp',0)


0 1 0 0 -1 0
1 -4 1 -1 5 -1
0 1 0 0 -1 0
Filtro para acentuar contraste
>> w=fspecial('unsharp');
Imagen Original Resultado del Filtro
Mscaras con fspecial (IV)
Acentuar transiciones horizontales y verticales
Prewit: Acentuar transiciones horizontales
Mscara: w =
[1 1 1
0 0 0
-1 -1 -1]

Sobel: Acentuar transiciones horizontales

Mscara: w =
[1 2 1
0 0 0
-1 -2 -1]
Acentuar transiciones verticales: Transpuesta de la matriz
Ejemplo: Filtro Prewit

>> w=fspecial('prewitt');
Imagen Original
Resultado del Filtro
Ejemplo: Filtro Sobel
>> w=fspecial('sobel');
>> hp=transp(w); % Acenta vertical
Imagen Original Resultado del Filtro
Filtros no lineales
Filtro lineal
a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b
Filtro no lineal
Valor de los pxeles
Bloque de pxeles
17 24 1 8 15
1 1 1
23 5 7 14 16
1 1 1
4 6 13 20 22 1 1 1
10 12 19 21 3
11 18 25 2 9 >>B = nlfilter(A, [m n], funcin_nl)

Aplicacin Supresin de rudo


Ejemplo de aplicacin
de filtro no lineal
Sea: -Sxy La regin de la imagen
-(x,y) Centro de la regin
- f(x,y) La salida del filtro (escalar)
Filtro de Media aritmtica

f ( x, y ) 1
g ( s, t )
mn ( s ,t )S xy
A= B=
A = imread(imagen.jpg'); 1 2 3 1.3333 2.3333 1.7778
fun = @(x) mean(x(:)); 4 5 6 3.0000 5.0000 3.6667
B = nlfilter(A,[3 3],fun); 7 8 9 2.6667 4.3333 3.1111
Filtros no lineales (II)
Ejemplo de Filtro de Media aritmtica
Imagen original Media aritmtica
Filtros no lineales (III)
Filtro de Media geomtrica
1
mn
f ( x, y ) g ( s, t )
( s ,t )S xy

Filtro de Media armnica


mn
f ( x, y )
1

( s ,t )S xy g ( s, t )

Funcin spfilt:
Gonzles, R.; Woods, R.; Eddins, S.: Digital Image Processing Using Matlab. 2004
Filtros no lineales (IV)
Ejemplo de Filtro de Media geomtrica
(I2=spfilt(I, 'gmean', 3, 3);)
Imagen original Media geomtrica
Filtros no lineales (V)
Ejemplo de Filtro de Media armnica
>> I2=uint8(3*3./imfilter(1./I, ones(3, 3), 'symmetric'))
Media harmnico
Imagen original
Filtros no lineales (VI)
Filtro de Media Contra-armnica
g ( s ,
( s ,t )S xy
t ) Q 1

f ( x, y )
g ( s ,
( s ,t )S xy
t ) Q

Filtro de Punto medio


f ( x, y ) 1 max{g ( s, t )} min{g ( s, t )}
2
Filtros no lineales (VII)
Ejemplo de Filtro de Media Contra-armnica
(I2=spfilt(I, 'chmean,3, 3);)
Imagen original Media contraharmnico
Filtros no lineales (VIII)
Ejemplo de Filtro de Punto medio
>> d1=ordfilt2(I, 1, ones(3, 3), 'symmetric'); % Mnimo
>> d2=ordfilt2(I, 3*3, ones(3, 3), 'symmetric'); % Mximo
>> I1=uint8(1/2*(d2+d1));
Imagen original Punto medio
Cul filtro utilizar?
Verificar como se difuminan los bordes despus de aplicar el filtro
>>I=imread('contornos.tif');
% Se determinan los bordes verticales
>> II=edge(I, 'sobel', 'vertical'); imshow(II)
Cul filtro utilizar? (II)
% Se aplica ruido a la imagen
>> III=imnoise(I,'salt & pepper',0.005);
% Se aplica el filtro mediana y se detectan bordes verticales
>> IV=medfilt2(III);
>> V=edge(IV, 'sobel', 'vertical'); imshow(V)
Cul filtro utilizar? (III)
% Se aplica el filtro promedio y se detectan bordes verticales
>>w=fspecial('average');
>>VI=uint8(imfilter(III, w, 'symmetric'));
>> VII=edge(VI, 'sobel', 'vertical'); imshow(VII)
% Se aplica el filtro media armnica y se detectan bordes verticales
>> VIII=uint8(3*3./imfilter(1./III, ones(3, 3), 'symmetric'));
>>IX=edge(VIII, 'sobel', 'vertical'); imshow(IX)
Resultado
% Se aplica el filtro punto medio
%y se detectan bordes verticales
>> d1=ordfilt2(III, 1, ones(3, 3), 'symmetric');
Calidad por siguiente orden:
>> d2=ordfilt2(III, 3*3, ones(3, 3), 'symmetric'); Mediana
>> X=uint8(1/2*(d2+d1)); Promedio
>>XI=edge(X, 'sobel', 'vertical'); imshow(XI)
Punto medio
Media armnica

Frente a ruido:
Sal y Pimienta

Você também pode gostar