Pergunta

Eu quero encontrar um algoritmo que pode encontrar linhas quebradas ou formas em um bitmap. considere uma situação em que eu tenho um bitmap com apenas duas cores, costas e brancos (As imagens usadas em livros para colorir), há algumas curvas e linhas que devem ser conectados uns aos outros, mas devido a alguns erros de digitalização, pedaços brancos sentar vez de negros. Como devo detectá-los? (Após este trabalho, quero bitmaps converter em arquivo vetorial. Eu quero trabalhar com o algoritmo potrace).

Se você tem alguma idéia, por favor me avise.

Foi útil?

Solução

Aqui está um algoritmo simples para curar pequenas lacunas:

Em primeiro lugar, usar um filtro que cria um pixel preto quando qualquer um de seus oito vizinhos é preto. Isto irá aumentar o seu esboço geral.

Em seguida, use um filtro de afinamento que remove o contorno extra, mas deixa as lacunas preenchidas sozinho.

Consulte este artigo para alguns filtros e parâmetros: Image Processing Lab em C #

Outras dicas

A abordagem mais simples é usar uma técnica chamada morfológica fechando . Isso só funcionará se os espaços nas linhas são muito pequenos em relação ao quão perto as diferentes linhas são uns com os outros.

Como você escolhe o elemt estruturação para realizar o fechamento também pode tornar o desempenho melhor ou pior.

O artigo da Wikipedia é muito teórica (ou matemática), de modo que você pode querer voltar para o Google ou qualquer livro sobre Processamento de Imagem para obter uma melhor explicação de como ele é feito.

Transformada de Hough pode ajudá-lo. Bônus: você recebe os parâmetros de linhas para o seu arquivo vetorial

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top