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.