El algoritmo de poda es una técnica utilizada en el procesamiento digital de imágenes basada en la morfología matemática . [1] Se utiliza como complemento a los algoritmos de esqueleto y adelgazamiento para eliminar componentes parásitos no deseados (espolones). En este caso, los componentes "parásitos" se refieren a las ramas de una línea que no son clave para la forma general de la línea y deben eliminarse. Estos componentes a menudo se pueden crear mediante algoritmos de detección de bordes o digitalización . Los usos comunes para la poda incluyen el reconocimiento automático de caracteres impresos a mano . A menudo, la inconsistencia en la escritura de letras crea espolones no deseados que deben eliminarse para una mejor caracterización. [2]
El algoritmo de poda estándar eliminará todas las ramas más cortas que una cantidad determinada de puntos. Si una rama parásita es más corta que cuatro puntos y ejecutamos el algoritmo con n = 4, la rama se eliminará. El segundo paso garantiza que los troncos principales de cada línea no se acorten con el procedimiento.
La x en las matrices indica una condición de “no importa”, es decir, la imagen podría tener un 1 o un 0 en el lugar.
Aplique este paso una cantidad determinada de (n) veces para eliminar cualquier rama con (n) píxeles o menos.
Dondequiera que se satisfagan los elementos estructurantes, el centro de la matriz 3x3 se considera un punto final.
Realice la dilatación utilizando una matriz de 3x3 (H) que consta de todos los 1 y solo inserte 1 donde la imagen original (A) también tenía un 1. Realice esto para cada punto final en todas las direcciones (n) veces.
Tome el resultado del paso 1 y únalo con el paso 3 para lograr los resultados finales.
%% ---------------% Poda% ---------------claro ; clc ; % Imagen leída enimg = imread ( 'Poda.tif' ); b_img_skel = bwmorph ( img , 'skel' , 40 ); b_img_spur = bwmorph ( b_img_skel , 'espuela' , Inf ); figura ( 'Nombre' , 'Poda' ); subtrama ( 1 , 2 , 1 );imshow ( b_img_skel );título ( sprintf ( 'Esqueleto de la imagen' ));subtrama ( 1 , 2 , 2 );mostrar ( b_img_spur );título ( sprintf ( 'Imagen de esqueleto podada' ));
En el ejemplo de MATLAB que se muestra a continuación, se toma la imagen original (abajo a la izquierda) y se la esqueletiza 40 veces, luego se la poda para eliminar los espolones según el código de MATLAB anterior. Como se muestra (abajo a la derecha), esto eliminó la mayoría de los espolones, lo que dio como resultado una imagen más limpia.