¿Qué es un código de cadena?
En gráficos de computadora y procesamiento de imágenes, un código de cadena es un algoritmo utilizado para codificar los contornos de un objeto en una imagen en blanco y negro o monocromo. La secuencia de códigos resultante puede describir cómo dibujar el contorno del objeto en relación con la imagen en la que se encuentra, o puede ser una colección de direcciones relativas a la ubicación en el contorno donde comenzó el algoritmo, proporcionando esencialmente pasos que puede seguirse para volver a dibujar el objeto. Estos códigos pueden normalizarse de acuerdo con una fórmula y luego compararse con otro código de cadena para determinar si dos objetos son idénticos. Se puede usar un código de cadena para aislar objetos en un programa de visión por computadora o segmentación de imágenes en el procesamiento de imágenes, aunque más comúnmente se puede usar en programas de reconocimiento óptico de caracteres (OCR).
Aunque existen varios algoritmos establecidos para un código de cadena, el concepto básico es el mismo en cada uno. Primero, se localiza el borde de un objeto, generalmente moviéndose píxel por píxel a través de una imagen ráster. Una vez ubicado, se registra la posición y se detectan los bordes circundantes. Dependiendo de si el algoritmo de detección se moverá en sentido horario o antihorario, la ubicación actual se mueve en una dirección u otra a lo largo del borde hasta que vuelva a la posición original.
Cada vez que se mueve la posición actual, se registra un número en el código de la cadena. Este número generalmente indica la dirección que se movió a lo largo del borde del objeto. Por ejemplo, si un algoritmo de código de cadena sigue un borde recto de derecha a izquierda, cada vez que el borde se traza a la izquierda, el código numérico de la izquierda se agrega al final del código. El código resultante es una cadena de números en la que, si la secuencia se sigue desde un punto de partida arbitrario y se coloca un píxel en cada paso, se volverá a dibujar el contorno del objeto.
Una vez que se completa la cadena de números que componen el código, se pueden aplicar varios algoritmos diferentes para ayudar a hacer comparaciones con otras secuencias de código de cadena. Primero, el número se normaliza girando el número inicial hasta que se determina el valor entero más bajo. De esta forma, se pueden comparar dos objetos que tienen el mismo contorno, independientemente de en qué parte de cada objeto comenzó la codificación.
Existen otras versiones más complejas del algoritmo de código de cadena. Estos incluyen la codificación basada en vectores en la que el contorno de un objeto se describe mediante una secuencia de coordenadas que están conectadas por líneas, aunque este método puede tener pérdidas cuando se usa en contornos finamente detallados. También existe una versión del algoritmo que utiliza la codificación de longitud de ejecución (RLE) para comprimir aún más los códigos de objetos excepcionalmente grandes o complejos para que puedan almacenarse de una manera más eficiente.