| Páxina de recursos | Versión
orixinal publicada en quesabesde.com
© >> |
TÉCNICAS DE FILTRADO
Os filtros son operacións que se aplican aos píxeles dunha imaxe dixital para mellorala, resaltar certa información ou acadar un efecto especial. Algúns son complexos, e é lóxico que o usuario de a pe se limite a probalos e a utilizalos en función do efecto observado. Moitos filtros básicos, nembargantes, baséanse nunha lóxica sinxela, e adentrándonos nela é moito máis doado atopar a solución máis efectiva e apropiada a cada necesidade.
Mellora global e local
Xa teño mencionado un par de veces a diferencia entre dous tipos de
técnicas de mellora da imaxe: as de mellora global, nas que cada píxel
se procesa con independencia da sua posición e atendendo somente ao
seu valor, e as de mellora local, nas que influe o valor dos píxeles
viciños (dous píxeles equivalentes en distintas zonas poden
dar dous resultados diferentes).
En xeral, as técnicas de mellora global son as relacionadas co histograma.
Empréganse para cambiar toda a imaxe ou ben unha parte. Esta parte,
non obstante, non é unha zona no senso espacial, senón que está
composta por aquel conxunto de píxeles que posuen certos valores de
densidade.
O funcionamiento das máis das técnicas de mellora global xa o temos descrito nos artigos sobre niveis e curvas, máis que nada sobre os exemplos prácticos.
A nivel de programación, consisten en establecer unha LUT ou táboa de consulta que relacione cada valor da imaxe de entrada cun valor de saída. Esta LUT (Look-Up Table) pode aparecer de dos xeitos: en forma de función de transformación continua (tal como se manexa na ferramenta Curvas), ou como un listado ou índice de pares de valores correspondentes.
![]() |
|
Táboa
de correspondencias en forma de función continua (esquerda)
e de índice (dereita). |
Dominio espacial e frecuencial
Na mellora local as técnicas de procesamento de punto ou de convolución
poden operar sobre a imaxe tanto no dominio espacial como no da frecuencia.
De feito, en moitos casos hai maneira de actuar en calquera dos dous campos.
No espacial calcúlase sobre os propios valores dos píxeles,
e no frecuencial tradúcense primeiro a un mapa de frecuencias mediante
unha transformada de tipo Fourier.
Deste xeito, é posible aplicar filtros típicos do tratamento dos sinais eléctricos como os de Paso baixo, Paso alto ou Paso banda. O primeiro limita ou elimina as altas frecuencias; o segundo, as baixas, e o terceiro ambas as dúas, é dicir, limita o rango posible do intervalo entre un valor mínimo e outro máximo.
As altas frecuencias corresponden na imaxe a cambios bruscos
de densidade, e as baixas, a cambios suaves. O filtro Paso baixo,
por tanto, logra reducir o ruido suavizando as transicións, mentras
que a alternativa Paso alto reforza os contrastes.
![]() |
|
Arriba, filtros típicos no dominio frecuencial. Abaixo, variacións producidas no dominio espacial. |
Pero o tema central deste artigo é o filtrado espacial que se fai definindo un contorno cos viciños dun píxel central. A este contorno chamámolo ventá, máscara ou matriz de convolución, e normalmente é cadrado ou rectangular, aínda que é posible definir outras formas rómbicas, circulares, etc.
A cada posición na ventá asígnase un peso ou participación no cálculo que dará o novo valor para o píxel central. Daquela, vaise desprazando a máscara, centrándoa en cada un dos píxeles da imaxe. Ao percorrido completo é ao que denominamos filtrado, e os sucesivos resultados, sempre a partir dos valores orixinais, forman a nova imaxe. É obvio que nos bordos e esquinas a ecuación varía, xa que parte da máscara pérdese.
Dous campos típicos nos que centraremos esta exposición son os de desenfoque mediante promedios e a detección de bordos.
Técnicas de promediado
Ben seguro, o exemplo máis sinxelo de máscara de filtrado é
a que promedia un contorno de 3 x 3 píxeles. Súmanse os 9 valores
e divídese por 9. O peso de cada valor inicial é 1/9 do resultado.
Os filtros máis sinxelos de desenfoque empregan estas máscaras,
producindo un efecto semellante aos de paso baixo. De feito chámaselles
filtros de paso baixo espacial.
![]() |
Promediado
homoxéneo cunha máscara de 3 x 3 píxeles. |
Canto máis grande sexa o contorno abarcado (5 x 5, 7 x 7, 9 x 9), máis se difuminan os detalles da imaxe, xa que cada vez haberá máis proporción de valores idénticos dentro de duas máscaras contiguas. Pero esváese logo a información da imaxe.
![]()
![]()
|
|
Desenfoque
con máscaras de 3x3 e de 5x5 píxeles. |
Contrólase moito mellor o alcance do desenfoque cunha matriz onde os pesos diminuen coa distancia respecto ao píxel central. É o que se denomina promediado ponderado.
A diminución pode calcularse en forma de campá gaussiana, en base a unha ecuación na que o valor da varianza determina o número de píxeles a ter en conta. Iso é o que manexamos como valor radio nos filtros de desenfoque gaussiano, con tan bos resultados.
![]() |
|
Máscara
de convolución gaussiana de 7x7 píxeles. |
O promedio ten o inconveniente de desdibuxar bordos e formas. Para evitalo empréganse técnicas de promediado selectivo. Poden calcularse, por exemplo, as catro medias proporcionais entre os dous viciños laterais, os dous verticais, os dous nun sentido diagonal e os do sentido inverso, e elexir o resultado que máis se pareza ao valor original do píxel.
En certos casos é máis efectivo o cálculo da mediana. Non é propiamente unha convolución, senón un criterio tan sinxelo como seleccionar da máscara o valor medio dos existentes. Aseméllase nisto aos filtros Máximo e Mínimo.
O filtro Máximo consiste en asignar ao píxel de referencia o valor máis alto dos atopados na máscara, polo que o seu efecto é ensanchar as zonas craras e afinar as escuras. Mínimo fai xusto o contrario, seleccionando o valor máis baixo.
A mediana dun conxunto de valores discretos é tal que hai igual número de valores por debaixo e por enriba. Para entendelo: unha secuencia de valores 3, 2, 4, 8, 3, 12, 3 ordénase así: 2, 3, 3, 3, 4, 8, 12. O promedio é 5, o valor central é 4, pero a mediana é 3, porque é o valor que ten o píxel do medio da fila.
|
|
De
arriba abaixo, imaxe afectada nun 10% por ruido de puntos brancos,
filtrada con promedio e con mediana de radio 1 ou 3 x 3 píxeles
(zoom ao 200%).
|
Detección de bordos
Empréganse diferentes patróns, que resaltan os cambios bruscos
de nivel. Estes patróns, chamados operadores, son unidireccionais,
aínda que poden combinarse nunha convolución múltiple.
![]() |
| As
duas máscaras da esquerda rastrexan as diferencias de píxeles
contiguos por filas e por columnas. As da dereita comparan píxeles
separados.
|
Con máscaras pequenas poden definirse oito direccións, que se indican como puntos cardinais:
![]() |
|
Operadores
de Kirsch para oito direccións. |
Nótese no gráfico cómo os pesos positivos igualan aos negativos. Se os valores positivos e negativos dos píxeles tamén se igualasen, o resultado sería cero. Por iso, en moitos filtros de detección de bordos vemos en tonalidades muy escuras as rexións homoxéneas.
Os operadores de gradiente por filas e por columnas que vimos localizan ben os cambios tonais, pero son excesivamente sensibles ao ruido, o mesmo que o operador de Roberts, que rastrexa en diagonal.
Isto débese a que son moi poucos os valores a calcular. Os operadores de Sobel, Prewitt ou Frei-Chen evitan o problema extendendo o gradiente de píxeles separados de xeito que participen os píxeles en diagonal.
![]() |
|
De
esquerda a dereita, operador en diagonal de Roberts, e operadores
de fila de Prewitt, Sobel e Frei-Chen. |
O operador de Prewitt concede o mesmo peso aos píxeles contiguos en vertical e horizontal, que aos contiguos en diagonal. O de Sobel duplica o coeficiente dos primeiros tendo en conta que os seus centros están máis próximos ao píxel central, e o de Frei-Chen afina máis, distinguindo a proporción real de 1 a 1,41 (raíz de 2)
![]() ![]()
|
|
De
arriba abaixo, detección de bordos con operadores Sobel O,
N e SE. |
A característica común a todos os filtros de detección de diferencias é a combinación de pesos positivos con negativos. Así, unha versión espacial sinxela dun filtro de paso alto viría de máscaras como éstas:
![]() |
|
Á
esquerda, combínanse os gradientes de filas e columnas. Á
dereita, tamén os gradientes diagonais. |
Son moi efectivos para acentuar o contraste e detectar puntos illados ou pequenos detalles, se se aumenta o tamaño da máscara. Con igual razonamento poden deseñarse máscaras que detecten a presencia de liñas finas:
![]() |
|
Detección
de liñas horizontais e verticais. |
Na próxima entrega veremos cómo tirar proveito
destas ideas creando filtros personalizados.