Quali sono i limiti di un rilevatore di Canny Edge?


18

La maggior parte della letteratura sugli algoritmi di rilevamento dei bordi e le applicazioni che utilizzano il rilevamento dei bordi, fa riferimento al rilevatore di bordi di Canny. Tanto che sembra quasi "la soluzione" al rilevamento dei bordi. Certamente, farebbe il miglior lavoro bilanciando il rumore e preservando i bordi.

Tuttavia, come semplice curiosità, c'è un motivo di preoccupazione per il rilevatore di bordi di Canny? o ci sono aree di applicazioni in cui Canny non sarà la migliore?

In questo contesto, un'implementazione più rapida non è realmente preoccupante. Il focus del rilevatore di bordi è buono o cattivo dovrebbe essere la qualità e l'utilità dei bordi generati.

Inoltre, non mi sto davvero concentrando su problemi specifici di implementazione. Sto cercando limiti o caratteristiche più teorici inerenti all'algoritmo.


È interessante notare qui questa domanda Il modo migliore per segmentare le vene nelle foglie? necessaria rilevazione dei bordi. Uno dei risultati mostrati è Canny e non ha un bell'aspetto. Tuttavia, molti aspetti potrebbero essere un problema di implementazione rispetto a una semplice limitazione di Canny! Qualche opinione su questo?
Dipan Mehta,

Si prega di vedere la mia risposta ( dsp.stackexchange.com/questions/1714/… ), mostra un risultato migliore di quello che ha ottenuto da Canny.
Geerten,

Possibile dupe (parziale): dsp.stackexchange.com/questions/74/… (o almeno correlato). La domanda in sé è praticamente la stessa (per una parte), le risposte sono in qualche modo diverse dalle risposte su questa domanda.
Geerten,

1
@DipanMehta: Quindi il rilevatore di bordi Canny non dovrebbe essere usato per rilevare cose che non sono bordi? :)
endolith

Risposte:


19

Dalla mia esperienza, i seguenti punti sono limitazioni:

  • Il risultato è binario. Talvolta è necessario misurare "quanto" il bordo si qualifica come bordo (ad es. Immagine di intensità proveniente da un rilevatore di bordi di ampiezza di Sobel)
  • La quantità di parametri porta a una regolazione infinita per ottenere solo quel risultato leggermente migliore.
  • Devi ancora collegare i bordi risultanti per estrarre i bordi completi che sembrano così ovvi per l'occhio umano + la mente.
  • Anche a causa del livellamento gaussiano: la posizione dei bordi potrebbe essere off, a seconda delle dimensioni del kernel gaussiano.

  • Il metodo ha problemi con angoli e incroci:

    • Il livellamento gaussiano li sfoca, rendendoli più difficili da rilevare (lo stesso vale per i bordi stessi)
    • I pixel degli angoli guardano nelle direzioni sbagliate per i loro vicini, lasciando bordi aperti e giunzioni mancanti

Quest'ultimo problema è affrontato dal metodo SUSAN , che collega meglio i bordi e si traduce anche in belle giunzioni, come mostrato da queste figure di esempio come indicato nel documento collegato:

Test immagine di input:

Test immagine di input

Risultati SUSAN:

Risultati SUSAN

Risultati Canny:

Risultati Canny

Puoi vedere chiaramente che SUSAN trova gli angoli e gli incroci invece di Canny.


Ok, a cosa ti riferisci sono principalmente problemi relativi all'implementazione. Sono d'accordo che tali problemi potrebbero esistere, ma a mio avviso molti altri rilevamenti di bordi e altri algoritmi. Sto cercando limiti o caratteristiche più teorici inerenti all'algoritmo.
Dipan Mehta,

Non sono d'accordo, il limite (che porta a un'immagine binaria) e i parametri sono parti del metodo (come descritto nel documento di Canny). Non lo vedo come dettagli di implementazione.
Geerten,

La soglia viene eseguita da ogni rilevatore di bordi e quindi l'uscita di ciascun rilevatore di bordi è binaria. Vorrei sottolineare la tua difficoltà a modificare i parametri e l'aspetto del livellamento gaussiano, ma a differenza del tipo di operatore LoG, Canny trova effettivamente la quantità ottimale di livellamento in presenza di rumore.
Dipan Mehta,

2
La soglia non viene eseguita da tutti i rilevatori di bordi (ad es. Sobel, come indicato nella mia risposta). È un passaggio di follow-up comune e logico in molti casi, ma non un passaggio di base di ogni metodo di rilevamento dei bordi.
Geerten,

6

o ci sono aree di applicazioni in cui Canny non sarà la migliore?

Posso pensare ad alcuni:

  • se hai bisogno di curve chiuse, un rivelatore in grado di garantire che potrebbero essere migliori (ad es. zero attraversamenti del laplaciano o segmentazione spartiacque)
  • se stai cercando di rilevare un oggetto omogeneo con un basso contrasto in alcune aree, un metodo di segmentazione che utilizza informazioni globali (come la segmentazione del bacino) può fornire risultati migliori

1

nella mia esperienza, il processo di rilevamento dei bordi con rilevatore di bordi sfrangiati leviga i bordi prima di essere in grado di rilevarli e i tempi e la lunghezza del filtro devono essere una corrispondenza perfetta per rilevare tutti i bordi senza errori.


1

Voglio solo menzionare una limitazione del rivelatore Canny, che ostacola la sua applicazione e che è l'impostazione dei parametri. Penso che l'impostazione dei parametri non sia solo un problema per il rivelatore Canny ma anche un problema per altri metodi di rilevamento dei bordi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.