En gráficos por computadora y procesamiento de imágenes, un código en cadena es un algoritmo que se utiliza para codificar los contornos de un objeto en una imagen en blanco y negro o monocromática. 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, esencialmente proporcionando pasos que se puede seguir 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 en 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 se puede usar más comúnmente en programas de reconocimiento óptico de caracteres (OCR).
Aunque existen varios algoritmos establecidos para un código en cadena, el concepto básico es el mismo en cada uno. Primero, se localiza el borde de un objeto, generalmente moviendo píxel a píxel a través de una imagen rasterizada. Una vez localizados, 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 moverá en una dirección u otra a lo largo del borde hasta que regrese a la posición original.
Cada vez que se mueve la posición actual, se registra un número en el código de 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 en cadena sigue un borde recto de derecha a izquierda, cada vez que se traza el borde hacia 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 los que, si se sigue la secuencia 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 le pueden aplicar varios algoritmos diferentes para ayudar a hacer comparaciones con otras secuencias de código en cadena. Primero, el número se normaliza rotando el número inicial hasta que se determina el valor entero más bajo. De esta manera, se pueden comparar dos objetos que tienen el mismo contorno, independientemente de en qué parte de cada objeto haya comenzado la codificación.
Existen otras versiones más complejas del algoritmo de código en 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 utiliza en contornos finamente detallados. También existe una versión del algoritmo que utiliza 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.