O que é um código de cadeia?
Em computação gráfica e processamento de imagens, um código de cadeia é um algoritmo usado para codificar os contornos de um objeto em uma imagem em preto e branco ou monocromática. A sequência de códigos resultante pode descrever como desenhar o contorno do objeto em relação à imagem em que está localizado, ou pode ser uma coleção de direções em relação ao local no contorno em que o algoritmo foi iniciado, fornecendo essencialmente etapas que pode ser seguido para redesenhar o objeto. Esses códigos podem ser normalizados de acordo com uma fórmula e, em seguida, comparados com outro código de cadeia para determinar se dois objetos são idênticos. Um código de cadeia pode ser usado para isolar objetos em um programa de visão por computador ou segmentar imagens no processamento de imagens, embora possa ser mais comumente usado em programas de reconhecimento óptico de caracteres (OCR).
Embora existam vários algoritmos estabelecidos para um código de cadeia, o conceito básico é o mesmo em cada um. Primeiro, a borda de um objeto é localizada, geralmente movendo pixel por pixel através de uma imagem rasterizada. Uma vez localizada, a posição é gravada e as bordas circundantes são detectadas. Dependendo de o algoritmo de detecção se mover no sentido horário ou anti-horário, o local atual é movido em uma direção ou outra ao longo da borda até retornar à posição original.
Cada vez que a posição atual se move, um número é gravado no código da cadeia. Esse número geralmente indica a direção que foi movida ao longo da borda do objeto. Por exemplo, se um algoritmo de código de cadeia estiver seguindo uma aresta reta da direita para a esquerda, cada vez que a aresta for rastreada para a esquerda, o código numérico da esquerda será adicionado ao final do código. O código resultante é uma sequência de números em que, se a sequência for seguida de um ponto de partida arbitrário e um pixel colocado em cada etapa, o contorno do objeto será redesenhado.
Depois que a sequência de números que compõe o código é concluída, vários algoritmos diferentes podem ser aplicados a ele para ajudar a fazer comparações com outras seqüências de código em cadeia. Primeiro, o número é normalizado girando o número inicial até que o valor inteiro mais baixo seja determinado. Dessa forma, dois objetos com o mesmo contorno podem ser comparados, independentemente de onde em cada objeto a codificação foi iniciada.
Existem outras versões mais complexas do algoritmo de código de cadeia. Isso inclui codificação baseada em vetor, na qual o contorno de um objeto é descrito por uma sequência de coordenadas conectadas por linhas, embora esse método possa ser prejudicial quando usado em contornos detalhados. Também existe uma versão do algoritmo que usa a codificação de comprimento de execução (RLE) para compactar ainda mais os códigos de objetos excepcionalmente grandes ou complexos, para que possam ser armazenados de maneira mais eficiente.