Professional Documents
Culture Documents
=
n
b
m
a
= =
+ + =
1
1
1
1
) , ( ). 4 , 5 ( ) 4 , 5 (
i j
j i h i i f g
) 1 , 1 ( ). 5 , 6 ( ) 0 , 1 ( ). 4 , 6 ( ) 1 , 1 ( ). 3 , 6 ( ) 1 , 0 ( ). 5 , 5 ( ) 0 , 0 ( ). 4 , 5 (
) 1 , 0 ( ). 3 , 5 ( ) 1 , 1 ( ). 5 , 4 ( ) 0 , 1 ( ). 4 , 4 ( ) 1 , 1 ( ). 3 , 4 ( ) 4 , 5 (
h f h f h f h f h f
h f h f h f h f g
+ + + + +
+ + + + =
Figura 1: Mscara de
convolucin.
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 3
La segunda mscara de la figura 2 produce un promedio ponderado. Como se puede
ver, los pxeles son multiplicados por diferentes coeficientes, dndoles as ms importan-
cia (peso) a algunos pxeles que a otros. En el caso particular de la mscara de la figura
2, el pxel del centro se multiplica por el valor ms alto, mientras que los dems pxeles
son pesados teniendo en cuenta la inversa de su distancia al centro. La razn de darle
ms importancia al pxel central y menos importancia a los pxeles ms alejados al centro,
radica en la necesidad de reducir el borroneado durante el proceso de suavizado. Como
se haca en el caso anterior, primero se multiplican los pxeles por los coeficientes de la
mscara, que son nmeros enteros potencias de 2 (mayor eficiencia, rapidez), y luego se
divide por la suma de todos los coeficientes de la mscara, o sea, 16.
En la figura 3 pueden verse los efectos del filtro espacial pasabajos, o suavizado. Te-
niendo en cuenta la imagen original, figura 3 (a), las figuras 3 (b) a 3 (f) son el resultado
de filtrar la imagen original utilizando ncleos cuadrados de n=3, 5, 9, 15 y 35, respectiva-
mente. Para la mscara de 3x3, notamos un leve borroneado general de la imagen, pero
los detalles que tienen aproximadamente el mismo tamao que el ncleo han sido afecta-
dos considerablemente. Para n=9, se ve un borroneado mucho mayor, y tambin que el
20% del crculo negro casi se confunde con el fondo, ilustrando as el efecto de mezclado
que el borroneado produce sobre aquellos objetos cuyos niveles de gris son parecidos a
los de sus vecinos. Otro efecto que se puede notar es la reduccin del ruido en los rectn-
gulos. Para n=15 y 35, se puede ver que el borroneado es excesivo. Este tipo de borrone-
ado se utiliza para eliminar los objetos pequeos en una imagen.
Figura 2: Dos
mscaras de 3x3
para realizar un
filtrado pasabajos
(suavizado,
promediado)
a) b)
b) a)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 4
Como ya lo mencionamos, una aplicacin importante de este tipo de filtrado es el bo-
rroneado de una imagen con el fin de obtener una presentacin burda de los objetos de
inters, de manera que la intensidad de los objetos pequeos se confunda con la del fon-
do y los objetos grandes sean fciles de detectar.
Por ltimo, presentaremos la implementacin general para filtrar una imagen de MxN
con una mscara de promedio ponderado de mxn (m y n impares):
donde el denominador es simplemente la suma de los coeficientes de la mscara y, por lo
tanto, una constante que slo debe calcularse una vez.
= =
= =
+ +
=
a
a i
b
b j
a
a i
b
b j
j i h
j i h j y i x f
y x g
) , (
) , ( ). , (
) , (
c) d)
Figura 3: a) Imagen original, 500x500 pxeles. (b) (f) Resultados de suavizar con
mscaras cuadradas de n=3, 5, 9, 15 y 35, respectivamente.
e) f)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 5
En el apndice se presentan algunos algoritmos en scripts de Matlab que realizan los
diferentes tipos de filtrado que se vern en este apunte.
Filtros estadsticos: filtro de mediana
Los filtros estadsticos son filtros espaciales no lineales cuya respuesta est basada en
ordenar los pxeles abarcados por una mscara y luego reemplazar el valor del pxel cen-
tral con el valor determinado por el resultado del ordenamiento. El ms conocido de estos
filtros es el filtro de mediana, el cual reemplaza el valor del pxel central por la mediana de
los niveles de gris del vecindario de ese pxel (el valor original del pxel es incluido en el
clculo de la mediana). Los filtros de mediana son muy usados debido a que, para ciertos
tipos de ruidos aleatorios, proveen una excelente reduccin de ruido y un borroneado con-
siderablemente menor que los filtros lineales de suavizado del mismo tamao. Los filtros
de mediana son particularmente efectivos cuando el ruido es del tipo impulso (tambin lla-
mado ruido sal y pimienta) debido a que aparece como puntos negros o blancos sobre-
puestos en la imagen.
La mediana, , de un conjunto de valores es aquella en la que la mitad de los valores
en el conjunto son menores o iguales que , y la otra mitad es mayor o igual a . Por e-
jemplo, si en una imagen tomamos un conjunto de pxeles de 3x3 con valores {1, 9, 5, 0,
8, 7, 1, 2, 4} la mediana para este caso ser el valor 4, ya que la mitad de este conjunto
es menor (o igual) y la otra mitad es mayor (o igual) a ste: {0, 1, 1, 2, 4, 5, 7, 8, 9}.
El procedimiento general para realizar el filtro de mediana en cualquier punto consiste
en ordenar los valores de dicho pxel y los de su vecindario, determinar la mediana, y a-
signar ste ltimo valor al pxel en cuestin. Para un vecindario de 3x3, la mediana es el
5
to
valor ms grande; para uno de 5x5 es el 13
mo
valor ms grande, y as. Cuando algunos
valores en un vecindario son iguales, stos se ven agrupados. Por ejemplo, supongamos
que un vecindario de 3x3 tiene los valores {10, 20, 20, 20, 15, 20, 20, 25, 100}. Ordenan-
do este conjunto nos queda {10, 15, 20, 20, 20, 20, 20, 25, 100}, de donde se ve que la
mediana es 20. As, la principal funcin de los filtros de mediana es hacer que los puntos
con niveles de gris distintos sean ms parecidos a los de su vecindario.
En la figura 4 puede verse los efectos que produce el filtro de mediana en una imagen
contaminada con ruido sal y pimienta.
Figura 4: a) Imagen con ruido sal y pimienta. b) Filtrado de (a) con un filtro de suavizado de
3x3. c) Reduccin de ruido con un filtro de mediana de 3x3.
a) b) c)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 6
La figura 4 (b) es el resultado de promediar la imagen original, figura 4 (a), con una
mscara de 3x3, mientras que la 4 (c) es la consecuencia de filtrar la original con un filtro
de mediana de 3x3. Se puede ver claramente que el filtro de mediana es ms efectivo a la
hora de remover ruido sal y pimienta que los filtros de promediado. No obstante, el precio
que se paga es un borroneado considerable.
Filtros Pasaaltos
El objetivo principal de estos filtros es resaltar los detalles delicados de una imagen
(por ejemplo, los bordes) o realzar los detalles de una imagen borroneada.
Anteriormente, vimos que el suavizado de una imagen, en el dominio espacial, se lo-
graba promediando el vecindario de cada pxel. Dado que el promediado es anlogo a la
integracin, es lgico pensar que en el proceso de filtrado con un pasaaltos se realicen o-
peraciones de diferenciacin espacial. Fundamentalmente, la magnitud de la respuesta de
un operador derivada es proporcional al grado de discontinuidad de la imagen en el punto
en donde este operador est siendo aplicado. Por esta razn, la diferenciacin de una i-
magen realza o enfatiza los bordes y otras discontinuidades tales como el ruido y atena
aquellas reas cuyos niveles de gris varan lentamente.
Los filtros pasaaltos que estudiaremos aqu estn basados en la primer y segunda de-
rivada. Las derivadas de una funcin discreta se definen en trminos de diferencias. Exis-
ten muchas maneras de definir estas diferencias. Sin embargo, existen requerimientos
que debe cumplir cualquier definicin de aqullas. La primer derivada debe ser:
- cero en las zonas que tienen un nivel de gris constante;
- distinta de cero ante un cambio del tipo escaln o rampa en el nivel de gris;
- y distinta de cero en toda la zona que tiene un cambio del tipo rampa;
Similarmente, cualquier definicin de segunda derivada debe ser:
- cero en zonas con nivel de gris constante;
- distinta de cero al principio o al final de un cambio del tipo escaln o rampa;
- y debe ser cero en toda la zona que tiene un cambio del tipo rampa con pendiente
constante.
Las definiciones bsicas para la primer y segunda derivada de una funcin bidimensio-
nal discreta con respecto a x y a y son las siguientes:
Como ya lo hemos discutido, los bordes en una imagen estn relacionados con los
cambios en el nivel de gris, o sea, con las altas frecuencias. A continuacin se desarrolla-
rn diferentes mtodos utilizados para la deteccin de lneas y bordes en general; mto-
dos asociados con la primer derivada, el gradiente, y mtodos asociados con la segunda
derivada, el laplaciano.
) , ( ) , 1 ( y x f y x f
dx
df
+ = ) , ( 2 ) , 1 ( ) , 1 (
2
2
y x f y x f y x f
dx
f d
+ + =
) , ( ) 1 , ( y x f y x f
dy
df
+ = ) , ( 2 ) 1 , ( ) 1 , (
2
2
y x f y x f y x f
dy
f d
+ + =
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 7
Deteccin de lneas
Consideremos las mscaras de la figura 5. Si convolucionamos la primer mscara con
una imagen, la respuesta ser mayor para lneas del ancho de un pxel orientadas hori-
zontalmente. Siempre que el fondo sea uniforme, la respuesta ser mxima cuando la l-
nea pase a lo largo de la segunda fila de la mscara. La segunda mscara de la figura 5
responder mejor a lneas orientadas a 45; la tercera mscara a lneas verticales; y la l-
tima a lneas orientadas a -45. Estas direcciones se pueden establecer observando que
para la direccin de inters las mscaras presentan valores mayores que para otras posi-
bles direcciones. Si denotamos con R
1
, R
2
, R
3
y R
4
las respuestas de las cuatro mscaras
de la figura 5 para un pxel en particular, entonces si se cumple que |R
i
|>|R
j
| con ji, ser
ms probable que dicho pxel est asociado a la direccin correspondiente a la mscara i.
Deteccin de bordes
Operador Gradiente.
El gradiente de una imagen f(x,y) en la posicin (x,y) viene dado por el vector
El vector gradiente siempre apunta en la direccin de la mxima variacin de la ima-
gen f en el punto (x,y). En la deteccin de bordes es muy importante la magnitud de este
vector, denominado simplemente como gradiente de la imagen, denotado por f y dado
por
Esta cantidad representa la variacin de la imagen f(x,y) por unidad de distancia en la
direccin del vector f. En general, el gradiente se suele aproximar mediante la expresin
que es mucho ms simple de implementar en la prctica. La direccin del vector gradiente
tambin es una cantidad importante. Sea (x,y) el ngulo del vector f en el punto (x,y).
Entonces se tiene que
Figura 5:
Mscaras de
lnea
(
(
(
=
(
=
x
f
x
f
f
f
f
y
x
2 2
|| ||
y x
f f f + =
| | | |
y x
f f f +
) , (
) , (
arctan ) , (
y x f
y x f
y x
x
y
=
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 8
donde los ngulos se miden con respecto al eje de abscisas.
El clculo del gradiente se basa en obtener las derivadas parciales para cada pxel.
Las derivadas se pueden implementar digitalmente de varias formas. En la figura 6 se
pueden ver los operadores de Robert, Prewitt, Sobel y Frei-Chen para determinar las
derivadas parciales. Sin embargo, los operadores de Sobel y de Frei-Chen tienen la ven-
taja de que proporcionan un suavizado adems del efecto de derivacin. Ya que la deriva-
cin acenta el ruido, el efecto de suavizado es particularmente interesante, puesto que e-
limina parte del ruido. El requisito bsico de un operador de derivacin es que, como ya
habamos dicho, la suma de los coeficientes de la mscara sea cero.
Laplaciano.
El Laplaciano de una imagen I(x,y) es una derivada de segundo orden definida por
En general, se suele tomar el valor negativo del Laplaciano. Al igual que en el caso del
gradiente se puede implementar en forma digital de varias formas.
Puesto que el Laplaciano es un operador de derivacin, la suma de los coeficientes
debe ser cero. Adems, el coeficiente asociado con el pxel central debe ser positivo y to-
dos los dems coeficientes negativos o cero, o viceversa.
En la figura 7 (c) podemos ver una mscara para el Laplaciano. En este caso, la ex-
presin para determinar el Laplaciano viene dada por
Figura 6: Operadores de derivacin: (a) de Roberts, (b) de Prewitt,
(c) de Sobel, y (d) de Frei-Chen.
2
2
2
2
2
y
f
x
f
f
=
) , 1 ( ) 1 , ( ) 1 , ( ) , 1 ( ) , ( 4 y x f y x f y x f y x f y x f + +
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 9
Aunque el Laplaciano responde a transiciones en la intensidad de la imagen, se em-
plea en pocas ocasiones en la prctica. Debido a que es un operador de segunda deriva-
das es excesivamente sensible a la presencia de ruido. Adems, el Laplaciano da lugar a
bordes dobles y no permite determinar direcciones. En general, juega un papel secundario
en la deteccin de bordes para determinar si un pxel est en la zona clara o en la zona
oscura del borde a travs del signo del Laplaciano.
El Laplaciano se puede utilizar para realzar una imagen de la siguiente forma:
El clculo anterior se puede simplificar teniendo en cuenta que el Laplaciano es un o-
perador lineal. En lugar de sumar (o restar) la imagen original, f(x,y), con el Laplaciano de
esta, obtenido con alguna de las mscaras de la figura 7, se puede utilizar una mscara e-
quivalente que realice las dos operaciones en un solo paso. Por ejemplo, para realzar una
imagen, f(x,y), usando la mscara laplaciana 7 (a), las operaciones seran las siguientes:
O lo que es equivalente:
Por lo tanto, la operacin de realce se ve simplificada cuando se utiliza una mscara
que realice todas las operaciones. Para el ejemplo anterior, la mscara usada se muestra
en la figura 8 (a).
En la figura 8 se puede ver cmo se realza una imagen con el Laplaciano. Las figuras
8 (a) y 8 (b) muestran las dos mscaras que se usan generalmente. La figura 8 (c) corres-
ponde a la imagen original (filamento de tungsteno escaneado con un microscopio electr-
nico). Las figuras 8 (d) y 8 (e) son el resultado de filtrar la imagen original con las msca-
ras 8 (a) y 8 (b), respectivamente. Comparando la imagen original con las filtradas, nota-
mos que ambas mscaras producen un realce efectivo, pero la resultante de filtrar con la
mscara 8 (b) muestra mejor los bordes y las formas.
Los mismos resultados hubisemos obtenido de haber restado la imagen original con
el Laplaciano de sta (calculado con la mscara 7 (a) o 7 (b)).
+
=
) , ( ) , (
) , ( ) , (
) , (
2
2
y x f y x f
y x f y x f
y x g
si el coeficiente central de la mscara es negativo
si el coeficiente central de la mscara es positivo
)} 1 , ( ) 1 , ( ) , 1 ( ) , 1 ( ) , ( 4 { ) , ( ) , ( + + + + + + = y x f y x f y x f y x f y x f y x f y x g
)} 1 , ( ) 1 , ( ) , 1 ( ) , 1 ( { ) , ( 5 ) , ( + + + + + = y x f y x f y x f y x f y x f y x g
Figura 7: Mscaras utilizadas para implementar los diferentes Laplacianos.
a) b) c) d)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 10
Filtros High-boost y Unsharp masking
Anteriormente, vimos cmo resaltar las altas frecuencias en una imagen para enfatizar
bordes y las formas. Para ello, utilizamos mscaras que realizaban operaciones de deriva-
cin. Ahora veremos dos tipos de filtros muy utilizados para el mismo fin pero que emple-
an otras operaciones.
Un procedimiento usado para agudizar las formas en una imagen es el unsharp mas-
king, que consiste en restar a la imagen original una versin promediada de sta (por
ejemplo, la imagen original filtrada con un pasabajos). Esto es,
Una generalizacin del unsharp masking es el denominado filtro high-boost que con-
siste en lo siguiente:
) , ( ) , ( ) , ( y x f y x f y x f
s
=
a)
b)
c)
Figura 8: (a) y (b) Mscaras laplacianas compuestas. c) Imagen original. (d) y (e) Resultado
de filtrar la imagen original con las mscaras (a) y (b), respectivamente.
d) e)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 11
donde A es mayor o igual a 1. La expresin anterior puede ser rescrita como
Cuando A es igual a 1, obtenemos una imagen filtrada con una pasaaltos, y cuando A
es mayor a 1, parte de la imagen original se aade al resultado del filtrado con pasaaltos,
lo que recupera parcialmente las componentes de bajas frecuencias perdidas en el proce-
so de filtrado con pasaaltos.
La ltima expresin del filtro high-boost es aplicable en general y no especifica cmo
obtener la imagen filtrada con un pasaaltos. Si para ello elegimos el Laplaciano, entonces
f
hb
(x,y) puede calcularse de la siguiente forma
El filtrado high-boost puede realizarse en un solo paso usando alguna de las mscaras
de la figura 9.
El filtrado high-boost se aplica principalmente cuando la imagen original es ms oscura
que la deseada. Variando el coeficiente A, generalmente se puede obtener un incremento
global del nivel de gris de la imagen. Esto se puede ver en la figura 10.
) , ( ) , ( . ) , ( y x f y x f A y x f
hb
=
) , ( ) , ( ). 1 ( ) , ( y x f y x f A y x f
s hb
+ =
+
=
) , ( ) , ( .
) , ( ) , ( .
2
2
y x f y x f A
y x f y x f A
f
hb
si el coeficiente central de la mscara laplaciana es negativo
si el coeficiente central de la mscara laplaciana es positivo
Figura 9: Mscaras
usadas para el
filtrado high-boost.
a) b)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 12
La figura 10 (a) es una versin ms oscura de la imagen de la figura 8 (c). La figura 10
(b) muestra el Laplaciano calculado con la mscara 9 (b), con A=0. La figura 10 (c) se ob-
tuvo usando la mscara 9 (b) pero con A=1. Como era de esperar, se han resaltado las
altas frecuencias en la imagen original (o sea, los bordes y las formas), pero la imagen ob-
tenida sigue siendo tan oscura como la original. Por ltimo, la figura 10 (d) muestra el re-
sultado de emplear la mscara 9 (b) con A=1.7. Este resultado es mucho ms aceptable
ya que el nivel de gris promedio fue aumentado, haciendo a la imagen ms clara y natural.
Figura 10: a) Imagen original. b) Laplaciano de (a) calculado con la mscara 9 (b), usando
A=0. c) Imagen realzada con el Laplaciano usando para ello la mscara 9 (b), A=1. d) Lo
mismo que (c) pero usando A=1.7.
e) d)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 13
Apndice
A continuacin se presentarn algunos algoritmos utilizados para filtrar una imagen en
el dominio espacial.
A=double(imread('c:\MATLAB6p5\toolbox\images\imdemos\ic.tif','tif'));
[f,c]=size(A);
% Deteccin de bordes verticales
for i=2:f-1
for j=2:c-1
C(i,j)=abs([1 1 1]*A((i-1):(i+1),j-1)-[1 1 1]*A((i-1):(i+1),j+1));
end
end
% Promediado con mascara de 3x3
for i=2:f-1
for j=2:c-1
D(i,j)=sum(sum(A((i-1):(i+1),(j-1):(j+1))));
D(i,j)=D(i,j)/9;
end
end
% Laplaciano
for i=2:f-1
for j=2:c-1
E(I,j)=4*A(i,j)-A(i-1,j)-A(i,j-1)-A(i,j+1)-A(i+1,j);
end
end
Como vemos, existe ms de una forma de implementar un filtro en los scripts de
Matlab. Por supuesto que hay algunas que son ms eficientes que otras pero como des-
ventaja no son soportadas en otros lenguajes de programacin. Por ejemplo, la funcin
sum de Matlab est muy optimizada pero difcilmente est implementada en otro lengua-
je. Lo mismo sucede con el producto de matrices.
Ahora se va a presentar una funcin de Matlab que realiza la correlacin de una ima-
gen con una mscara dada, pero es aconsejable hacer antes algunos algoritmos de
filtrado de manera genrica y aceptable en cualquier lenguaje de programacin. La
funcin de la que hablamos es la que sigue:
B=filter2(N,A,same);
donde N representa el ncleo o mscara y A la imagen que se desea filtrar. El parmetro
same se utiliza para que la funcin devuelva la parte central de la correlacin (que es del
mismo tamao que la imagen A).
Por ejemplo, para promediar una imagen con un ncleo de 3x3 se hace lo siguiente:
Np=1/9*ones(3);
Ap=filter2(N,A,same);
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial
Ctedra: Visin Artificial Septiembre de 2005
Filtrado Espacial 14
Para detectar bordes horizontales, la mscara es la que sigue (operador de Prewitt):
Nh=[1 1 1;0 0 0;-1 -1 -1];
Laplaciano:
Ng=[0 1 0;1 4 1;0 1 0];
Ng=[1 1 1;1 8 1;1 1 1];
Por ltimo, se presentarn dos formas de implementar el filtro de mediana. Primero, to-
memos una imagen cualquiera y agregumosle ruido del tipo sal y pimienta:
A=double(imread('circuit.tif','tif'));
[f,c]=size(A);
Ar=A;
for i=1:f*c
if rand<0.05
Ar(i)=0;
end
if rand>0.95
Ar(i)=255;
end
end
Veamos ahora una forma de aplicar el filtro de mediana con una mscara de 3x3:
F=zeros(size(A));
for i=2:f-1
for j=2:c-1
F(i,j)=median([Ar(i-1,(j-1):(j+1)) Ar(i,(j-1):(j+1)) Ar(i+1,(j-1):(j+1))]);
end
end
El algoritmo anterior simplemente forma un vector concatenando 3 filas de 3 elemen-
tos cada una, que corresponden a una ventana de 3x3 de la matriz Ar, y luego obtiene la
mediana de ese vector por medio de la funcin de Matlab median. Como no poda ser de
otra manera, Matlab tambin tiene una funcin que aplica el filtro de mediana a una ima-
gen cualquiera para un tamao de ventana dado. Es la siguiente:
Fmat=medfilt2(Ar,[3 3]);
Donde el vector [3 3] indica que la ventana deseada es de 3x3. Comparemos los resul-
tados:
figure, imshow(uint8(A))
figure, imshow(uint8(Ar))
figure, imshow(uint8(F))
figure, imshow(uint8(Fmat))