Quais são os algoritmos mais comuns para limiar adaptativo?

38

O limiar adaptativo foi discutido em algumas perguntas anteriores:

Limiar adaptativo para segmentação hepática usando Matlab

Quais são os melhores algoritmos para limiar de imagem de documento neste exemplo?

Obviamente, existem muitos algoritmos para limiar adaptativo. Quero saber quais você achou mais eficazes e úteis.

Quais algoritmos adaptativos você mais utilizou e para qual aplicativo; como você escolhe esse algoritmo?

Dipan Mehta
fonte

Respostas:

24

Não acho que a minha seja uma resposta completa, mas vou oferecer o que sei e, como este é um site editado pela comunidade, espero que alguém dê uma resposta complementar em breve :)

Métodos de limiar adaptativos são aqueles que não usam o mesmo limite em toda a imagem .

Mas, para alguns usos mais simples, às vezes basta escolher um limite com um método mais inteligente que o método iterativo mais simples . O método de Otsu é um método popular de limiar que assume que a imagem contém duas classes de pixels - primeiro plano e plano de fundo e possui um histograma bimodal . Em seguida, tenta minimizar a propagação combinada (variação intra-classe).

Os algoritmos mais simples que podem ser considerados métodos de limiar verdadeiramente adaptativos seriam os que dividem a imagem em uma grade de células e, em seguida, aplicam um método simples de limiar (por exemplo, iterativo ou o método de Otsu) em cada célula, tratando-a como uma imagem separada (e presumindo um histograma bi-modal). Se uma subimagem não puder ser atingida adequadamente, o limite de uma das células vizinhas poderá ser usado.

Uma abordagem alternativa para encontrar o limite local é examinar estatisticamente os valores de intensidade da vizinhança local de cada pixel . O limite é diferente para cada pixel e calculado a partir da vizinhança local (é possível uma mediana, média e outras opções). Há uma implementação desse tipo de métodos incluída na biblioteca OpenCV na cv::adaptiveThresholdingfunção

Encontrei outro método semelhante chamado Bradley Local Thresholding . Ele também examina a vizinhança de cada pixel, configurando o brilho para preto se o brilho do pixel for t% menor que o brilho médio dos pixels ao redor. O artigo correspondente pode ser encontrado aqui .

Esta resposta do stackoverflow menciona um método de limiar local (adaptável) chamado Niblack, mas eu nunca ouvi falar disso antes.

Por fim, existe um método que eu usei em um dos meus projetos menores anteriores, chamado Image Thresholding by Variational Minimax Optimization . É um método iterativo, baseado na otimização de uma função de energia que é uma combinação não-linear de dois componentes. Um componente visa calcular o limiar com base na posição de mudanças de intensidade mais fortes na imagem. O outro componente visa suavizar o limiar nas áreas de borda (objeto). Ele provou ser bastante bom em imagens de instrumentos analógicos (vários sombreados e reflexos de vidro / plástico presentes), mas exigiu uma escolha cuidadosa do número de iterações.

Edição tardia : inspirado no comentário a esta resposta . Há mais uma maneira que conheço de solucionar condições de iluminação irregulares. Escreverei aqui sobre objetos brilhantes em um fundo escuro, mas o mesmo raciocínio pode ser aplicado se a situação for inversa. Limite a transformação de cartola branca da imagem com um limite constante em vez da imagem original . Uma cartola branca de uma imagem não passa de uma diferença entre a imagem e sua abertura . Como explicação adicional, deixe-me oferecer uma citação de P. Soille: Análise de Imagem Morfológica :γ ( f )fγ(f)

Uma abertura da imagem original com um quadrado grande SE remove todas as estruturas relevantes da imagem, mas preserva a função de iluminação. A cartola branca da imagem original ou subtração da função de iluminação da imagem original gera uma imagem com uma iluminação homogênea.

Penélope
fonte
14

Você pode encontrar um documento contendo uma comparação de vários métodos de limiar aqui:

  • M. Sezgin, B. Sankur - Pesquisa sobre técnicas de limiar de imagem e avaliação quantitativa de desempenho, Journal of Electronic Imaging, 2004 - pdf

Aqui está outro artigo que avalia os métodos de binarização:

  • P. Stathis, E. Kavallieratou e N. Papamarkos - Uma Técnica de Avaliação para Algoritmos de Binarização, Journal of Universal Computer Science, 2008, - pdf

O método de binarização adaptativa que usei em meu último projeto usa imagens integrais para o cálculo rápido da função de limite usada pelo método Sauvola. O método Sauvola é descrito em:

  • J. Sauvola e M. Pietikainen, binarização adaptativa da imagem do documento, reconhecimento de padrões 33, 2000. - pdf

A modificação que utiliza imagens integrais que fornece uma aceleração de 20 vezes (de acordo com o artigo) é descrita neste artigo:

  • F. Shafait, D. Keysers e TM Breuel, Implementação eficiente de técnicas locais de limiar adaptativo usando imagens integrais, Reconhecimento e Recuperação de Documentos XV, 2008 - pdf

Estes são apenas os papéis que usei ao escolher o método de binarização para o meu projeto (para encontrar texto em imagens). Como não sou especialista, não sei dizer qual método é o melhor para qual aplicativo.

ppalasek
fonte
6

Esta pergunta foi respondida muito bem de diferentes perspectivas, e eu apenas quero resumir minha experiência e também enfatizar alguns problemas relacionados à binarização adaptativa.

A binarização adaptativa pode ser dividida em três categorias:

1) Método global: com este método, estima-se o primeiro plano de fundo da imagem; depois disso, uma imagem normalizada é gerada com a ajuda das informações de segundo plano. Em seguida, o método global de binarização é empregado.

2) Método baseado em patch: como o nome indica, o método baseado em patch executará binarização patch por patch. Em cada patch, uma binarização é estimada com um método global de binarização. Depois disso, é realizado algum pós-processamento para supor que o limite de binarização nos patches vizinhos tenha uma transição suave.

3) Método de janela móvel: com esse método, a binarização é feita pixel por pixel. Uma janela em movimento é configurada para calcular as estatísticas de pixels dentro da janela e, com base nas estatísticas, é calculado o limite para o pixel central dentro da janela.

É muito difícil dizer qual método é o melhor, pois depende do aplicativo. Ao pensar em uma binarização adaptativa, não se esqueça de considerar as seguintes perguntas:

1) parametrização: o método possui um procedimento automático de parametrização? Como podemos definir os parâmetros muito bem para que funcionem na maioria dos casos?

2) qual o critério para justificar uma boa binarização adaptativa? Em muitos casos, a diferença entre os diferentes métodos de binarização é realmente pequena. No entanto, a pequena diferença pode levar a uma grande diferença no final.

3) a binarização pode funcionar em algumas situações particulares? Por exemplo, suponha que o objetivo da binarização adaptativa seja extrair enquanto objetos de fundo preto, a binarização pode se adaptar automaticamente a essa situação? Ou vice-visto.

4) métodos adaptativos tendem a focar apenas nas configurações locais, portanto o resultado binário não é otimizado. Por exemplo, o famoso método Sauvola irá gerar objetos ocos se o objeto a ser otimizado for muito maior que a janela em movimento. Seu método adaptativo pode enfrentar essa limitação?

5) pré-processamento. Uma boa binarização também deve incluir informações privilegiadas sobre o processamento de imagens. Se a imagem estiver desfocada demais, ela poderá ajustar automaticamente os parâmetros do algoritmo ou invocar algum pré-processamento para evitar uma binarização ruim.

fique à vontade
fonte