come rilevare il centro di un cerchio sfocato con opencv


10

Ho la seguente immagine:

inserisci qui la descrizione dell'immagine

Ci sono curve sulla foto. vorrei trovare il centro dei cerchi contenenti curve.

ho provato a trasformare opencv e hough circle ma non ho avuto risultati.


tutte le curve sono concentriche? la distanza tra loro è variabile?
endolith,

sì, sono concentrici. e nessuna spaziatura è costante.
JingKe,

Risposte:


3

Dovrai prima migliorare il contrasto dell'immagine, quindi filtrarlo fortemente per rimuovere il rumore. poiché i cerchi sono "spessi" (sfocati), puoi filtrare un po 'senza distruggere la struttura dei cerchi.

Vorrei quindi applicare un algoritmo di rilevamento dei bordi per ottenere un'immagine binaria dei bordi che può essere elaborata dalla trasformazione circolare di Hough.

Ottengo la seguente immagine di bordo dalla tua immagine: inserisci qui la descrizione dell'immagine

Utilizzando i seguenti comandi MATLAB:

 % x is the input grayscale image. First we adaptively improve the contrast over the image
 y= adapthisteq(x);

 % next we use the Canny edge detector with a strong Gaussian lowpass filter
 ee=edge(y, 'canny', [], 5);
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.