Quais são as limitações de um detector Canny Edge?

18

Em geral, a maioria da literatura sobre algoritmos de detecção de borda e aplicativos que usam detecção de borda faz referência ao detector de borda de Canny. Tanto que parece quase "a solução" para a detecção de borda. Certamente, ele faria o melhor trabalho ao equilibrar o ruído e preservar as bordas.

No entanto, como uma simples curiosidade, existe uma área de preocupação para o detector de bordas de Canny? ou existem áreas de aplicativos em que o Canny não será melhor?

Nesse contexto, uma implementação mais rápida não é realmente uma preocupação. O foco do detector de arestas ser bom ou ruim deve ser a qualidade e a utilidade das arestas geradas.

Além disso, não estou realmente focado em questões específicas de implementação. Estou procurando mais limitações teóricas ou características inerentes ao algoritmo.

Dipan Mehta
fonte
Curiosamente esta questão aqui Melhor maneira de segmentar veias em folhas? detecção de borda necessária. Um dos resultados mostrados é Canny e não parece muito bom. No entanto, muitos aspectos podem ser problemas de implementação versus uma simples limitação do Canny! Alguma opinião sobre isso?
Dipan Mehta
Por favor, veja minha resposta ( dsp.stackexchange.com/questions/1714/… ), mostra um resultado melhor do que o que ele obteve de Canny.
Geerten
Possível dupe (parcial): dsp.stackexchange.com/questions/74/… (ou pelo menos relacionado). A pergunta em si é praticamente a mesma (por um lado), as respostas são um pouco diferentes das respostas sobre essa pergunta.
Geerten
1
@DipanMehta: Portanto, o detector Canny edge não deve ser usado para detectar coisas que não são arestas? :)
endolith 29/03

Respostas:

19

Da minha experiência, os seguintes pontos são limitações:

  • O resultado é binário. Às vezes, você precisa de uma medida de "quanto" a borda se qualifica como borda (por exemplo, imagem de intensidade proveniente de um detector de borda de amplitude de Sobel)
  • A quantidade de parâmetros leva a ajustes infinitos para obter o resultado apenas um pouco melhor.
  • Você ainda precisa conectar as arestas resultantes para extrair as arestas completas que parecem tão óbvias para o olho humano + a mente.
  • Também devido à suavização gaussiana: a localização das bordas pode estar desativada, dependendo do tamanho do núcleo gaussiano.

  • O método tem problemas com cantos e junções:

    • A suavização gaussiana os embaça, tornando-os mais difíceis de detectar (o mesmo vale para as bordas)
    • Os pixels dos cantos olham na direção errada para os vizinhos, deixando bordas abertas e sem junções

Esse último problema é abordado pelo método SUSAN , que conecta melhor as arestas e também resulta em boas junções, como mostra estas figuras de exemplo, conforme indicado no artigo vinculado:

Imagem de entrada de teste:

Imagem de entrada de teste

Resultados SUSAN:

Resultados SUSAN

Resultados Canny:

Resultados Canny

Você pode ver claramente que a SUSAN encontra os cantos e cruzamentos em vez de Canny.

Geerten
fonte
Ok, o que você está se referindo são principalmente questões relacionadas à implementação. Concordo que esses problemas possam existir, mas, na minha opinião, muitos outros tipos de detecção de borda e outro algoritmo. Estou procurando mais limitações teóricas ou características inerentes ao algoritmo.
Dipan Mehta 14/03/12
Eu discordo, o limiar (levando a uma imagem binária) e os parâmetros são partes do método (conforme descrito no artigo de Canny). Não vejo isso como detalhes de implementação.
58568 Geerten
O limiar é feito por cada detector de borda e, portanto, a saída de cada detector de borda é binária. Eu consideraria sua dificuldade em ajustar os parâmetros e o aspecto da suavização gaussiana, mas, diferentemente do tipo de operador LoG, o Canny realmente encontra a quantidade ideal de suavização na presença de ruído.
Dipan Mehta 14/03/12
2
O limiar não é realizado por todos os detectores de borda (por exemplo, Sobel, como mencionado na minha resposta). É uma etapa comum e lógica de acompanhamento em muitos casos, mas não uma etapa básica de todo método de detecção de borda.
21812 Geerten
6

ou existem áreas de aplicativos em que o Canny não será melhor?

Posso pensar em alguns:

  • se você precisar de curvas fechadas, um detector que possa garantir essas condições pode ser melhor (por exemplo, zero cruzamentos da segmentação do Laplacian ou da bacia hidrográfica)
  • se você estiver tentando detectar um objeto homogêneo com baixo contraste em algumas áreas, um método de segmentação que usa informações globais (como a segmentação de bacias hidrográficas) pode fornecer melhores resultados
Niki Estner
fonte
1

na minha experiência, o processo de detecção de bordas com um detector de bordas astucioso suaviza as bordas antes de poder detectá-las, e o tempo e o comprimento do filtro devem ser a combinação perfeita para detectar todas as bordas sem erros.

bugra ergin
fonte
1

Eu só quero mencionar uma limitação do detector Canny, que dificulta sua aplicação, e isso é a configuração de parâmetros. Acho que a configuração de parâmetros não é apenas um problema para o detector Canny, mas também para outros métodos de detecção de bordas.

fique à vontade
fonte