Quiero reconstruir el texto de la siguiente imagen lo mejor posible. La parte difícil es que quiero hacerlo solo usando operaciones morfógicas en la imagen
Intenté usar erosión, dilatación, apertura y cierre, pero el resultado no es muy bueno.
¿Es esto posible?
image-processing
morphological-operations
Jackobsen
fuente
fuente
Respuestas:
Si está dispuesto a sumar / restar imágenes transformadas morfológicamente, etc., puede contar cuántos píxeles de señal hay cerca de cada píxel y el umbral en función de ese número.
Si luego te involucras con una máscara 3x3 que tiene un agujero en el medio, puedes obtener algo como esto:
fuente
¡Este es un problema bastante interesante de resolver! Prueba con un filtro mediano . Vea la referencia aquí y aquí para más detalles.
Aunque no he puesto mis manos para simular su problema, esta es una sugerencia. Mi instinto dice que podría darte un gran beneficio porque, se sabe que contrarresta el tipo de ruido sal y pimienta. En su caso, las imágenes tienen puntos blancos adicionales alrededor del borde que se convertirán a blanco o negro, dependiendo de qué lado del alfabeto esté. Así es como se ve después del filtrado medio:
fuente
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
realmente no es diferente a un vecindario como este
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:
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:
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:
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.
fuente