Explicación del cálculo del filtro de la mediana

Para la explicación del filtro de la mediana se utilizará una imagen en tono de grises, el formato de las variables es uint8 de tamaño 10x10 pixeles como la que se indica a continuación.

A veces, se incluyen ceros en los extremos de la figura para tener en cuenta los pixeles laterales, de lo contrario estos serán ignorados. En la programación se incluyen en la matriz los ceros en los extremos y se realizan los cálculos matemáticos para generar la convolución de las matrices.

0 0 0 0 0 0 0 0 0 0 0 0
0 2 255 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

El filtro máscara se utiliza es una matriz de 3x3 que se sobrepone sobre la imagen, este puede ser de varios tamaños 3x3, 5x5, 9x9 se elige según la aplicación y el número de datos a filtrar.

0 0 0 0 0 0 0 0 0 0 0 0
0 2 255 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Los datos que se enmarcan en la máscara son:

0 0 0
0 2 255
0 250 226

Se organizan los pixeles en orden ascendente.

0 0 0 0 0 2 226 250 255

Realizar la operación mediana, en donde los valores que están alrededor del valor de la mediana no se tienen en cuenta para la operación. En la imagen se tachan con una línea de color negro y se deja el valor a utilizar en el centro del vector y se marca con el color verde, estas ilustraciones son de carácter académico porque en la práctica estos procesos se deben realizar utilizando algoritmos matemáticos para identificar el valor de la mediana.

0 0 0 0 0 2 226 250 255

El valor 0 se coloca en el centro del filtro de 3x3 y se remplaza el número 2.

0 0 0 0 0 0 0 0 0 0 0 0
0 0 255 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Continuando con el siguiente valor, la matriz de 3x3 se desplaza un pixel a la derecha, a este proceso se le denomina convolución de matrices.

0 0 0 0 0 0 0 0 0 0 0 0
0 0 255 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Los datos que envuelva la matriz de 3x3 ahora son lo que se indican.

0 0 0
0 255 248
250 226 232
0 0 0 0 226 232 248 250 255

Realizar la operación mediana y remplazar el 255 por el valor 226.

0 0 0 0 0 0 0 0 0 0 0 0
0 0 226 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Al realizar el remplazo del nuevo valor, la matriz quedaría como se indica a continuación al desplazarse otro pixel a la derecha.

0 0 0 0 0 0 0 0 0 0 0 0
0 0 226 248 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Los datos que envuelva la matriz de 3x3 ahora son lo que se indican:

0 0 0
226 248 253
226 232 120
0 0 0 120 226 226 232 248 253

Realizar la operación mediana y remplazar el 248 por el valor 226.

0 0 0 0 0 0 0 0 0 0 0 0
0 0 226 226 253 254 254 241 255 248 0 0
0 250 226 232 120 255 245 224 255 255 252 0
0 249 235 132 12 115 255 255 216 241 247 0
0 255 25 189 114 206 255 0 10 253 36 0
0 234 246 247 225 255 247 255 203 235 212 0
0 255 253 221 201 246 248 174 67 146 251 0
0 187 239 139 108 174 55 208 167 216 218 0
0 117 191 213 173 61 25 6 197 255 0 0
0 169 243 246 233 196 68 140 249 14 223 0
0 242 30 223 8 255 0 242 26 226 38 0
0 0 0 0 0 0 0 0 0 0 0 0

Continuando el proceso con todos los pixeles la matriz filtrada resultante de la imagen es:

0 226 226 232 245 241 241 241 248 0
226 235 232 232 253 254 254 248 248 241
226 232 132 132 206 245 245 241 247 241
234 235 189 189 225 255 247 235 216 212
234 246 221 221 246 247 203 174 203 146
234 239 225 221 225 246 203 203 212 212
187 213 201 174 173 174 167 174 197 146
169 191 213 174 108 68 140 197 216 14
117 213 213 213 68 68 68 197 197 14
0 169 30 196 8 68 26 26 26 0

Código para aplicar el filtro de la mediana

El código permite comprobar el funcionamiento de la función del filtro de la mediana utilizado en Matlab.

(Para ampliar la imagen haga clic sobre ella)