El procesamiento de imágenes es una disciplina fascinante que abarca una amplia gama de técnicas para manipular imágenes digitales con el fin de mejorar su calidad, extraer información relevante o realizar tareas específicas. Una de estas técnicas es el esqueletizado de imágenes, que tiene aplicaciones en diversas áreas, como visión por computadora, reconocimiento de patrones, análisis de formas y más. Concretamente consiste en un proceso en el que se reduce una forma binaria a su representación más esquemática, manteniendo la topología de la forma original. Esencialmente, el esqueleto de una imagen representa la «columna vertebral» de la forma, conservando su estructura esencial. Esta técnica es útil para simplificar la representación de formas y facilitar la extracción de características relevantes.
En este artículo, exploraremos en detalle la utilidad del esqueletizado de imágenes y cómo se implementa en Python utilizando la biblioteca ‘scikit-image‘ la cual deberemos instalar previamente en nuestro sistema con ‘pip install scikit-image‘:
IMPLEMENTACION EN PYTHON:
La mencionada biblioteca ‘scikit-image‘ proporciona una implementación eficiente y fácil de usar del esqueletizado de imágenes a través de la función skeletonize
. Esta función toma una imagen binaria como entrada y devuelve el esqueleto de la forma representado como una matriz binaria. A continuación, veremos un ejemplo de cómo implementar el esqueletizado de imágenes en Python utilizando dicha librería aplicada a la siguiente imagen:
Así el primer paso que deberemos dar es naturalmente el de importar las librerías y recursos a utilizar y proceder al cargado y lectura de la imagen en cuestión con ‘OpenCV‘. En este punto usaremos la función ‘imread()‘ pasándole como primer argumento, la ruta a la imagen en cuestión y como segundo argumento, el valor 0, con lo que estaremos indicando que queremos cargarla en escala de grises:
Hecho esto y teniendo en cuenta que la operación que queremos realizar, ha de efectuarse sobre una imagen binaria, el siguiente paso será realizar dicha conversión mediante la aplicación de los correspondientes umbrales. En ocasiones puede ser útil la aplicación de inversión sobre la misma. Usándose en este caso la función ‘bitwise_not()‘:
Una vez realizados estos pasos previos, llevaremos a cabo la operación de esqueletización con ‘scikit-image‘ y su función ‘skeletonize()‘:
Finalmente mostraremos el resultado final, junto al original en gris y su versión binaria invertida, utilizando la función para visualizar fotos de ‘OpenCV‘, ‘imshow()‘:
OUTPUT:
CONCLUSION:
El esqueletizado de imágenes es una técnica poderosa en el campo del procesamiento de imágenes, con aplicaciones en diversas áreas como análisis de formas, extracción de características, reconocimiento de patrones y más. La implementación de esta técnica en Python utilizando la biblioteca ‘scikit-image‘ proporciona una forma eficiente y flexible de realizar operaciones de esqueletizado en imágenes digitales. Al comprender la utilidad y la implementación del esqueletizado de imágenes, los practicantes de procesamiento de imágenes pueden aprovechar esta técnica para una variedad de aplicaciones prácticas y proyectos de visión por computadora.
Saludos.