Si por alguna razón está limitado a usar operaciones morfológicas, entonces puede considerar usar un "esquema de votación" de operaciones cercanas orientadas.
Un problema con las operaciones morfológicas es que realmente no tienen en cuenta la direccionalidad. Para el píxel central, un vecindario como este
1 0 0
1 1 0
0 1 1
realmente no es diferente a un vecindario como este
0 1 0
1 1 0
1 1 0
Eso puede causar problemas, ya que la dilatación y la erosión no están sesgadas direccionalmente cuando usted quisiera que lo fueran. Entonces, una cosa que puede hacer es encontrar la operación morfológica sesgada direccionalmente más apropiada usando núcleos como estos:
1 1 0 1 0 0 1 0 0
0 1 0 1 1 0 1 1 0
0 1 1 0 1 1 0 1 1 . . .
Esto sería mejor con núcleos de 5 x 5, pero creo que la idea es lo suficientemente clara. Básicamente, la idea de un núcleo de detección de esquinas se estira un poco para que sea un núcleo de detección de segmento de línea. También puede usarlo para encontrar las curvas de mejor ajuste:
0 0 0 1 1
0 0 1 1 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
Obviamente, esto conduce a una gran cantidad de núcleos, pero si la idea básica funciona prometedora, hay una manera de optimizar la técnica para que el núcleo que mejor se encuentre en una sola pasada.
En cualquier caso, si usa múltiples núcleos y algo de lógica, cada operación en (x, y) requiere más cálculos que un paso morfológico tradicional:
- En cada píxel (x, y), aplique cada uno de varios operadores morfológicos. Para cada operador, calcule tanto el resultado de la operación morfológica Y el grado en que la entrada coincide con el núcleo. ("Grado" = número de píxeles que coinciden)
- Elija el resultado morfológico para el núcleo que más se aproxime a la configuración real de píxeles de encendido / apagado.
El tamaño del núcleo debe coincidir con el tamaño de la entrada. En lugar de usar un kernel más grande, podría usar un kernel "extendido" para reducir la cantidad de operaciones. El siguiente núcleo es solo un núcleo de 3 x 3 con un radio mayor que 1.
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 0 0 0 0 0 0
1 0 0 0 0 0 1