Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ruido y Filtrado PDF
Ruido y Filtrado PDF
DOMINIO FRECUENCIAL
FUNCIONES EN MATLAB
Problema.
n(x,y)
Imágenes ruidosas
Escáner de la letra “G” con y sin ruído
>>G_ruidosa = G + randn(R,Q)*0.2
G=01110100011000010000100111000101110
J= imnoise(I,‘gaussian’, m, v)
Ruido Gaussiano (IV)
Ejemplo:
Ejemplo multiplicativo:
Mejoramiento de la imagen:
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 función 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:
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 réplica
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)
Tamaño 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:
Metodología:
Definir tamaño 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 tamaño de vecindad.
Puede ser rectangular o de cualquier otra forma, generalmente
cuadrado y número de elementos impar.
Debe definirse la posición del pixel de estudio respecto a la
ventana, generalmente y por simetría el central.
En una convolución las propiedades del filtro vienen dadas por los
coeficientes de la máscara.
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
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
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
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 máscara(kernel)
para un tamaño 3x3:
1 1 1
1/9 * 1 2 1
1 1 1
Filtros de media Lineales (V)
1 b 1
1/9 *
b b2 b
1 b 1
a b
g ( x, y) w ( s, t ) f ( x s, y t )
s at b
Filtros espaciales (IV)
Ejemplo:
Valor de los píxeles
17 24 1 8 15
Máscara (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)
Filtro promedio:
900
800
800
700
700
600
600
500
500
400
400
300 300
200 200
100 100
0 0
Imagen
f= Máscara
00000 w=
00000 123
00100 456
00000 789
00000
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
2
f ( x , y ) 2
f ( x, y )
f ( x, y )
2
x 2
y 2
Filtro Laplaciano (III)
Función 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
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 )
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)
Imágenes: 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 )
w= w=
0 1 0
1 -4 1 1 1 1
0 1 0 1 -8 1
-4 1 1 1
+1 También se utiliza el negado de las anteriores máscaras
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 práctica
Incluye
diagonal
MatLab: Resumen
Introducción de ruido:
Gaussiano:
Gaussiano
Ruidosa = imnoise(imagen,’gaussian’,”media”,”varianza”)
Multiplicativo:
Multiplicativo
Ruidosa = imnoise(imagen, 'speckle',”media”,”varianza”)
Matlab
Filtrado:
Mediana:
Filtrada = medfilt2(Imagen,[tamaño de ventana])
Por defecto: ventana = 3 x 3
Máximo:
Filtrada = ordfilt2 (Imagen,9,ones(tamaño de ventana))
Mínimo:
Filtrada = ordfilt2 (Imagen,1,ones(tamaño de ventana))
Media aritmética:
Filtrada = imfilter (Imagen,fspecial(‘average’,[tamaño de ventana]))
Por defecto: ventana = 3 x 3
Gaussiano:
Filtrada = imfilter (Imagen,fspecial(‘gaussian’,[tamaño de ventana],varianza))
Por defecto: ventana = 3 x 3
Generación de Filtros en Matlab
h = fspecial(type)
h = fspecial(type, parameters)
e
s a s b
( s 2 t 2 ) / 4 2
0.05
% Máscara y filtro
>> w=fspecial(‘gaussian',3,0.5);
0
-3 -2 -1 0 1 2 3 >> I2=imfilter(I,w,'replicate');
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
Máscaras 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
Máscaras 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');
Máscara: 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); % Acentúa 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 píxeles
Bloque de píxeles
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], función_nl)
ˆ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 aritmética
Imagen original Media aritmética
Filtros no lineales (III)
Filtro de Media geométrica
1
mn
fˆ ( x, y ) g ( s, t )
( s ,t )S xy
Función spfilt:
Gonzáles, R.; Woods, R.; Eddins, S.: Digital Image Processing Using Matlab. 2004
Filtros no lineales (IV)
Ejemplo de Filtro de Media geométrica
(I2=spfilt(I, 'gmean', 3, 3);)
Imagen original Media geométrica
Filtros no lineales (V)
Ejemplo de Filtro de Media armónica
>> I2=uint8(3*3./imfilter(1./I, ones(3, 3), 'symmetric'))
Media harmónico
Imagen original
Filtros no lineales (VI)
Filtro de Media Contra-armónica
g ( s ,
( s ,t )S xy
t ) Q 1
fˆ ( x, y )
g ( s ,
( s ,t )S xy
t ) Q
Frente a ruido:
Sal y Pimienta